postman 如何将路径变量绑定到请求主体参数?

ioekq8ef  于 2022-11-07  发布在  Postman
关注(0)|答案(2)|浏览(199)

我想发布一个HTTP请求,如下所示:
http://本地主机/上下文/{{名称}}/{{年龄}}
我想把这些路径变量绑定到请求主体,如果我的请求主体是:

{
  "name": "Frank",
  "age": 18
}

我要发送的最后一个请求是:
地址:
那么如何在POSTMAN中实现这一功能呢?
postman request

6yoyoihd

6yoyoihd1#

**在Postman中提供您的请求(非参数URL):**x1c 0d1x
参数URL

我认为您不需要在路由中传递变量,因为您已经在请求体中传递了它们。
如果你正在使用NodeJS(使用Express)和任何JS库,你可以这样发送请求,(使用axios):

const body = {
  "name": "Frank",
  "age": 18
}
const requestHandler = async() => {
    const serverResponse = await axios.post(`http://localhost/context/${body.name}/${body.age}`, {data: body}, {
    headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${backend-token}`
    }
};

然后,在服务器端,通过正确定义路由(用于参数化和非参数化的url选择),您可以创建一个路由来处理请求,如下所示:

使用快速

import {Router} from "express";
const yourServerRouter = Router();
yourServerRouter.post(`yourPrimaryDomain/:name/:age`, function-to-handle-request)

如果你使用的是python框架(Flask或Django),你可以这样做:

flask (使用flask_restful):

urls = [f"your_base_url/name/age"]
from flask_restful import Resource, request
import json

class BioData(Resource):
    def post(self):
        url = request.url
        if "context" in url:
            request_body = json.loads(request.data)
            response = self.context_handler(request_data)

    def context_handler(self, request_data):
         name, age = request_data
         ....
         ....
flask_app = Flask(__name__)
flask_app.add_resource(BioData, *urls)

Django(使用DRF -视图集)

from rest_framework import viewsets, routers

class BioDataViewsets(viewsets.ModelViewSets):
    @action(methods=["POST"], detail=False, url_name="context", url_path="context")
    def context(self, *args,**kwargs):
        clients_request = json.loads(self.request.body)

**define your path as above (for flask)**

context_router = routers.DefaultRouter()

context_router.register("name/age/", company_viewsets.CompanyViewSets)
url_patterns = [path(f"your_base_url/context", include(context_router.urls())]
pcrecxhr

pcrecxhr2#

最终我从这个page中得到了一些线索,通过Pre-request-Script可以解析请求体,感兴趣的属性可以设置为变量,在URL中引用。

var r = JSON.parse(request.data);
pm.variables.set("name", r.name);
pm.variables.set("age", r.age);

并使用下面的形式来应用Pre-request-Script中的变量集:

http://localhost/context/{{name}}/{{age}}

请求主体是:

{
  "name": "Frank",
  "age": 18
}

postman request

相关问题