gpt4 book ai didi

rest - 使用 REST 发布项目列表

转载 作者:行者123 更新时间:2023-12-04 07:08:23 25 4
gpt4 key购买 nike

当我有一个(长)要发布到服务器的项目列表时,我正在寻找有关如何序列化我的数据的约定。

例如,如果我有一个资源 /users我想向它发布一个新的,我会对新用户的字段进行 http 编码并将其放入请求正文中,如下所示:name=foo&age=20
但是如果我有一个用户列表,就像这样 [{ name: 'foo', age: 20 }, { name: 'bar', age: 10 }] ,有没有传统的发布方式?

我在想 name[0]=foo&age[0]=20&name[1]=bar&age[1]=10但我找不到任何东西来支持它。 Web 服务器通常接受/期望什么?

最佳答案

可能会改变我的答案的快速问题:您是直接从 HTML 表单发布还是期待更复杂的东西(例如 javascript 处理,或者甚至不是基于 Web 的客户端)
如果你有一个足够复杂的客户端,你可以只构造一个 JSON 字符串和 POST,内容类型为 application/json .然后,任何正在处理 POST 的资源都可以使用任意数量的 json 库来读取发布的字符串并按原样处理。
进一步漫游:
您使用什么框架/语言来构建您的 REST 服务?他们是否有内置功能/约定来帮助您?
例如,如果您使用 JAX-RS 来构建您的服务,则有一个内置注释 @FormParam可用于处理发布的表单...例如:如果您发布以下内容类型为 application/x-www-form-urlencoded :name=foo&age=20&name=bar&age=10您可以通过以下方式在服务端检索并行列表:

@POST
@Consumes("application/x-www-form-urlencoded")
public void createUsers(@FormParam("name") List<String> name, @FormParam("age") List<String> age) {
// Store your users
}
但是您将不得不处理一个问题,如果一个列表比另一个更短/更长,您将如何解决这个问题?如果创建用户列表需要或可选新字段,会发生什么情况? (但正如我最初提到的,JSON 对象的 JSON 数组可以解决这个问题……有许多库支持 JAX-RS 中的自动 JSON 反序列化,或者也可以选择创建自己的 MessageBodyReader .
(下一节免责声明:我不知道 Rails,我的经验更多是在 Java 服务领域......我基于 this guide )。看起来 Rails 的约定是 name[]=foo&name[]=bar自动将发布的数据处理到数组中,并使用类似的约定来填充结构,如 user[name]=foo&user[age]=20 ...也许如果您在轨道上有某种方法可以使用/滥用这两个功能来获得所需的结果?
其他 REST 框架和语言可能有自己的约定和功能:)

关于rest - 使用 REST 发布项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com