C# 对数组进行Url编码
这可能看起来很脏,但我发誓这是为了文档目的 我正在使用文档中的C# 对数组进行Url编码,c#,url,
servicestack,C#,Url,
servicestack,这可能看起来很脏,但我发誓这是为了文档目的 我正在使用文档中的GETs访问我的服务,这样人们就可以尝试一些东西,而不需要太复杂 将x-http-method-override=POST附加到URL会强制服务器将GET作为POST 这一切都很好,除非我需要发布一个对象数组。这在一个标准的帖子中很简单,但今天我有了一个新的噩梦面包 预期的POST如下所示: {"name":"String","slug":"String","start":"String","end":"String","id":"S
GET
s访问我的服务,这样人们就可以尝试一些东西,而不需要太复杂
将x-http-method-override=POST
附加到URL会强制服务器将GET
作为POST
这一切都很好,除非我需要发布一个对象数组。这在一个标准的帖子中很简单,但今天我有了一个新的噩梦面包
预期的POST
如下所示:
{"name":"String","slug":"String","start":"String","end":"String","id":"String","artists":[{"id":"String","name":"String","slug":"String"}],"locationId":"String"}
正如你所看到的,这里有很多艺术家
我已尝试做以下工作:
model/listing?start=10:10&end=12:30&artists[0].name=wayne&artists[0].id=artists-289&locationid=locations-641&x-http-method-override=POST
但是没有用
我怎样才能将一组对象放入一个URL中,使服务堆栈满意呢
我明白这并不是我要做的事情,但它让我用可点击的示例URL来解释我的结束点变得非常容易,你可以用它来编码URL中的复杂对象。这应该适用于您的DTO:
model/listing?name=wayne&artists=[{id:artists-289,name:sample1},{id:artists-290,name:sample2}]&locationId=locations-641
您可以使用ServiceStack.Text中的ToJsv
扩展方法从任意对象以编程方式创建JSV。C'mon,停止滥用REST。似乎您试图通过GET
使用POST
。难怪你有麻烦。你猜怎么着?这只是一个开始——想想支持、API成熟度和困惑的用户。如果我是你,我会马上停下来,开始使用POST
。API的用户有双手,希望他们是聪明的,尽管这听起来可能很愚蠢。他们将能够设计一个简单的POST
请求。你也可以通过提供一个简单有效的例子来帮助他们。我说过这纯粹是为了文档!!这与生产代码和最终用户无关!这与休息的纯洁性、极端的休息观点和宗教信仰无关。我的REST服务可以完美地表现为RESTful,我可以按照自己的意愿记录它。用一个合法的问题来证明您的REST有多纯净有点便宜,我指的是HTTP RFC标准。如果我同意我们可以就REST的纯洁性进行辩论(让我们继续讨论),那么你就不想违反标准。这就是我的观点——一个大家都能理解的通用标准。我只是想把它作为一种文档的替代方法:ServiceStack还支持Swagger,一种HTML/JS接口,用于API的交互式文档。我已经尝试设置Swagger,但不知道如何让它查看我的API