相关疑难解决方法(0)

如何设计RESTful搜索/过滤?

我目前正在设计和实现PHP中的RESTful API.但是,我没有成功实施我的初始设计.

GET /users # list of users
GET /user/1 # get user with id 1
POST /user # create new user
PUT /user/1 # modify user with id 1
DELETE /user/1 # delete user with id 1
Run Code Online (Sandbox Code Playgroud)

到目前为止标准相当,对吗?

我的问题是第一个问题GET /users.我正在考虑在请求正文中发送参数来过滤列表.这是因为我希望能够在不获取超长URL的情况下指定复杂的过滤器,例如:

GET /users?parameter1=value1&parameter2=value2&parameter3=value3&parameter4=value4
Run Code Online (Sandbox Code Playgroud)

相反,我希望有类似的东西:

GET /users
# Request body:
{
    "parameter1": "value1",
    "parameter2": "value2",
    "parameter3": "value3",
    "parameter4": "value4"
}
Run Code Online (Sandbox Code Playgroud)

它更具可读性,为您提供设置复杂过滤器的绝佳机会.

无论如何,file_get_contents('php://input')没有返回请求的请求体GET.我也尝试过http_get_request_body(),但我正在使用的共享主机没有pecl_http.不确定它会有所帮助.

我发现了这个问题,并意识到GET可能不应该有一个请求体.这有点不确定,但他们建议不要这样做.

所以现在我不知道该怎么做.你如何设计RESTful搜索/过滤功能?

我想我可以使用POST,但这似乎不太RESTful.

api rest search filter

426
推荐指数
6
解决办法
31万
查看次数

如何使用 Swashbuckle 在 Swagger 中将复杂对象作为查询字符串传递

我有一个复杂的对象要在 ASP.Net Core 3.2 中作为查询字符串传递。

public class Customer
{
    public string Firstname { get; set; }
    public List<Address> Addresses { get; set; }
}

public class Address
{
    public string Home_Address { get; set; }
    public string Office_Address { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

它在 Postman 中的工作方式如下:

http://localhost:52100/v1/Customer?Addresses[0].Home_Address=123HomeStreet&Addresses[0].Office_Address=123OfficeStreet
Run Code Online (Sandbox Code Playgroud)

但是,如何在地址类型为“array[object](查询)”的 Swagger 文档中传递值 http://localhost:52100/v1/swagger-ui/index.html

我在我的项目中添加了 Swashbuckle.AspNetCore 5.4.1、Swashbuckle.AspNetCore.Annotations 5.4.1、Swashbuckle.AspNetCore.Filters 5.1.1 引用

c# http-get swagger swashbuckle asp.net-core

5
推荐指数
1
解决办法
1764
查看次数

标签 统计

api ×1

asp.net-core ×1

c# ×1

filter ×1

http-get ×1

rest ×1

search ×1

swagger ×1

swashbuckle ×1