Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/albrow/forms
A lightweight go library for parsing form data or json from an http.Request.
https://github.com/albrow/forms
Last synced: about 2 months ago
JSON representation
A lightweight go library for parsing form data or json from an http.Request.
- Host: GitHub
- URL: https://github.com/albrow/forms
- Owner: albrow
- License: mit
- Created: 2014-08-07T16:11:30.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2022-12-16T03:14:57.000Z (about 2 years ago)
- Last Synced: 2024-07-31T20:51:38.767Z (5 months ago)
- Language: Go
- Homepage:
- Size: 36.1 KB
- Stars: 137
- Watchers: 8
- Forks: 24
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go - forms - Framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files. (Forms / Search and Analytic Databases)
- awesome-go - forms - A lightweight go library for parsing form data or json from an http.Request. - ★ 94 (Forms)
- awesome-go-extra - forms - 08-07T16:11:30Z|2017-07-02T12:22:45Z| (Forms / Advanced Console UIs)
README
Forms
=====[![GoDoc](https://godoc.org/github.com/albrow/forms?status.svg)](https://godoc.org/github.com/albrow/forms)
Forms is a lightweight, but incredibly useful go library for parsing
form data from an http.Request. It supports multipart forms, url-encoded
forms, json data, and url query parameters. It also provides helper methods
for converting data into other types and a Validator object which can be
used to validate the data. Forms is framework-agnostic and works directly
with the http package.Version 0.4.0
Development Status
------------------Forms is no longer actively maintained, and therefore it is not recommended for
use in mission-critical production applications at this time. That said, it is
fairly well tested and is probably fine to use for low-traffic hobby
sites.Forms follows semantic versioning but offers no guarantees of backwards
compatibility until version 1.0. Keep in mind that breaking changes might occur.
We will do our best to make the community aware of any non-trivial breaking
changes beforehand. We recommend using a dependency vendoring tool such as
[godep](https://github.com/tools/godep) to ensure that breaking changes will not
break your application.Installation
------------Install like you would any other package:
```
go get github.com/albrow/forms
```Then include the package in your import statements:
``` go
import "github.com/albrow/forms"
```Example Usage
-------------Meant to be used inside the body of an http.HandlerFunc or any function that
has access to an http.Request.``` go
func CreateUserHandler(res http.ResponseWriter, req *http.Request) {
// Parse request data.
userData, err := forms.Parse(req)
if err != nil {
// Handle err
// ...
}// Validate
val := userData.Validator()
val.Require("username")
val.LengthRange("username", 4, 16)
val.Require("email")
val.MatchEmail("email")
val.Require("password")
val.MinLength("password", 8)
val.Require("confirmPassword")
val.Equal("password", "confirmPassword")
val.RequireFile("profileImage")
val.AcceptFileExts("profileImage", "jpg", "png", "gif")
if val.HasErrors() {
// Write the errors to the response
// Maybe this means formatting the errors as json
// or re-rendering the form with an error message
// ...
}// Use data to create a user object
user := &models.User {
Username: userData.Get("username"),
Email: userData.Get("email"),
HashedPassword: hash(userData.Get("password")),
}// Continue by saving the user to the database and writing
// to the response
// ...// Get the contents of the profileImage file
imageBytes, err := userData.GetFileBytes("profileImage")
if err != nil {
// Handle err
}
// Now you can either copy the file over to your server using io.Copy,
// upload the file to something like amazon S3, or do whatever you want
// with it.
}
```Contributing
------------See [CONTRIBUTING.md](https://github.com/albrow/forms/blob/master/CONTRIBUTING.md)
License
-------Forms is licensed under the MIT License. See the LICENSE file for more information.