Popularity
4.8
Declining
Activity
0.0
Stable
137
8
24

Programming language: Go
License: MIT License
Tags: Forms    
Latest version: v0.3.3

forms alternatives and similar packages

Based on the "Forms" category.
Alternatively, view forms alternatives based on common mentions on social networks and blogs.

  • nosurf

    CSRF protection middleware for Go.
  • gorilla/csrf

    DISCONTINUED. gorilla/csrf provides Cross Site Request Forgery (CSRF) prevention middleware for Go web applications & services 🔒
  • The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
    Promo workos.com
    WorkOS Logo
  • binding

    DISCONTINUED. Reflectionless data binding for Go's net/http (not actively maintained)
  • form

    :steam_locomotive: Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
  • conform

    Trims, sanitizes & scrubs data based on struct tags (go, golang)
  • httpin

    🍡 HTTP Input for Go - HTTP Request from/to Go Struct
  • formam

    a package for decode form's values into struct in Go
  • qs

    Go module for encoding structs into URL query parameters
  • bind

    Bind form data to any Go values
  • queryparam

    Go package to easily convert a URL's query parameters/values into usable struct values of the correct types.
  • gbind

    Bind data to any Go value. Can use built-in and custom expression binding capabilities; supports data validation logic for Go values. // 将数据绑定到任何 Go 值。可使用内置和自定义表达式绑定能力;支持对Go值的数据校验逻辑.
  • checker

    Checker is a Go library for validating user input through checker rules provided in struct tags.

Do you think we are missing an alternative of forms or a related project?

Add another 'Forms' Package

README

Forms

GoDoc

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 being actively developed and is well-tested. However, since it is still a young library, it is not recommended for use in mission-critical production applications at this time. It is probably fine to use for low-traffic hobby sites, and in fact we encourage its use in those settings to help polish the API and find missing features and hidden bugs. Pull requests and issue reports are much appreciated :)

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 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:

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.

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

License

Forms is licensed under the MIT License. See the LICENSE file for more information.


*Note that all licence references and agreements mentioned in the forms README section above are relevant to that project's source code only.