Rails YAML 中的强参数句柄
Rails strong params handle in YAML
我正在制作 API 关于 swagger 和使用 YAML 的文档。
这是我的 YAML 代码
swagger: "2.0"
info:
title: Sign_up Api
description: This Will alow user to Signup.
version: 1.0.0
host: e9ea53234b75.ngrok.io
basePath: /customer_app/api/v1
schemes:
- https
paths:
/sign_up:
post:
summary: Return User Credentials After signup.
parameters:
- in: body
name: body
required: true
# type: string
schema:
type: object
properties:
email:
type: string
example: test123@gmail.com
password:
# type: string
example: test123
password_confirmation:
# type: integer
example: test123
name:
type: string
example: testabc
description: User can be signup by providing the listed params & it will return a authentication token and other user params.
produces:
- application/json
responses:
200:
description: User credentials.
properties:
id:
type: string
example: 70020ed1-50fe-4c7e-afed
password:
# type: string
example: pasw123
password_confirmation:
# type: string
example: pasw123
name:
type: string
example: testabc
422:
description: The specified email is invalid (e.g. not following the syntax) or paswwords are not same or missing params.
default:
description: Unexpected error
我通过
在rails中获取我的参数
params.require(:user).permit(:email, :password , :password_confirmation, :uuid, :name)
通过这种方式,我从邮递员那里发送我的参数
并收到此回复
<ActionController::Parameters {"user"=><ActionController::Parameters {"email"=>"moon123@gmail.com", "password"=>"moon123", "password_confirmation"=>"moon123", "name"=>"moon123"} permitted: false>, "format"=>:json, "controller"=>"customer_app/api/v1/registrations", "action"=>"create"} permitted: false>
但是通过在 YAML 中使用 user[email] 以错误的方式得到了这个
<ActionController::Parameters {"user[email]"=>"test123@gmail.com", "user[password]"=>"test123", "user[password_confirmation]"=>"test123", "user[name]"=>"testabc", "format"=>:json, "controller"=>"customer_app/api/v1/registrations", "action"=>"create", "registration"=>{"user[email]"=>"test123@gmail.com", "user[password]"=>"test123", "user[password_confirmation]"=>"test123", "user[name]"=>"testabc"}} permitted: false>
我不知道如何编辑我的 YAML 以获得从 Postman 收到的响应。
Postman 的“表单数据”主体用于 Content-Type: multipart/form-data
的请求。在OpenAPI 2.0中,此类请求需要有consumes: [multipart/form-data]
,body字段定义为in: formData
参数。
swagger: '2.0'
...
paths:
/sign_up:
post:
summary: Return User Credentials After signup.
consumes:
- multipart/form-data
parameters:
- in: formData
name: user[email]
type: string
format: email
x-example: test123@gmail.com
- in: formData
name: user[password]
type: string
format: password
x-example: test123
- in: formData
name: user[password_confirmation]
type: string
format: password
x-example: test123
- in: formData
name: user[name]
type: string
x-example: testabc
我正在制作 API 关于 swagger 和使用 YAML 的文档。 这是我的 YAML 代码
swagger: "2.0"
info:
title: Sign_up Api
description: This Will alow user to Signup.
version: 1.0.0
host: e9ea53234b75.ngrok.io
basePath: /customer_app/api/v1
schemes:
- https
paths:
/sign_up:
post:
summary: Return User Credentials After signup.
parameters:
- in: body
name: body
required: true
# type: string
schema:
type: object
properties:
email:
type: string
example: test123@gmail.com
password:
# type: string
example: test123
password_confirmation:
# type: integer
example: test123
name:
type: string
example: testabc
description: User can be signup by providing the listed params & it will return a authentication token and other user params.
produces:
- application/json
responses:
200:
description: User credentials.
properties:
id:
type: string
example: 70020ed1-50fe-4c7e-afed
password:
# type: string
example: pasw123
password_confirmation:
# type: string
example: pasw123
name:
type: string
example: testabc
422:
description: The specified email is invalid (e.g. not following the syntax) or paswwords are not same or missing params.
default:
description: Unexpected error
我通过
在rails中获取我的参数 params.require(:user).permit(:email, :password , :password_confirmation, :uuid, :name)
通过这种方式,我从邮递员那里发送我的参数
并收到此回复
<ActionController::Parameters {"user"=><ActionController::Parameters {"email"=>"moon123@gmail.com", "password"=>"moon123", "password_confirmation"=>"moon123", "name"=>"moon123"} permitted: false>, "format"=>:json, "controller"=>"customer_app/api/v1/registrations", "action"=>"create"} permitted: false>
但是通过在 YAML 中使用 user[email] 以错误的方式得到了这个
<ActionController::Parameters {"user[email]"=>"test123@gmail.com", "user[password]"=>"test123", "user[password_confirmation]"=>"test123", "user[name]"=>"testabc", "format"=>:json, "controller"=>"customer_app/api/v1/registrations", "action"=>"create", "registration"=>{"user[email]"=>"test123@gmail.com", "user[password]"=>"test123", "user[password_confirmation]"=>"test123", "user[name]"=>"testabc"}} permitted: false>
我不知道如何编辑我的 YAML 以获得从 Postman 收到的响应。
Postman 的“表单数据”主体用于 Content-Type: multipart/form-data
的请求。在OpenAPI 2.0中,此类请求需要有consumes: [multipart/form-data]
,body字段定义为in: formData
参数。
swagger: '2.0'
...
paths:
/sign_up:
post:
summary: Return User Credentials After signup.
consumes:
- multipart/form-data
parameters:
- in: formData
name: user[email]
type: string
format: email
x-example: test123@gmail.com
- in: formData
name: user[password]
type: string
format: password
x-example: test123
- in: formData
name: user[password_confirmation]
type: string
format: password
x-example: test123
- in: formData
name: user[name]
type: string
x-example: testabc