c# - REST 接口(interface)参数规范中的术语不明确?

标签 c# rest wcf sharepoint

上下文:

给定 REST 服务规范。服务操作将为外部系统提供 SharePoint 数据。在询问规范的创建者之前。做一些澄清,我想确定我没有错过任何琐碎的约定......

问题:

如何解读这个参数规范?

Parameters: PartNumber *, SerialNumber(n) *, CategoryNumber (optional search term), Description (optional search term)

到目前为止我的想法:

首先我以为'*'表示该参数是可选的,意思是'all'。这与可选 REST 路径参数的 C# WCF 约定相关,也与 SharePoint 搜索约定相关(其中 * 表示:全部)

但是接口(interface)规范对 CategoryNumber 使用“(可选搜索词)”,所以我假设“*”可能不是完全相同的...

另外:“SerialNumber(n) *”中的“(n)”可能是什么意思?

最佳答案

Given a REST service specification

根据牛津英语词典,definition specification 一词的含义是:

An act of identifying something precisely or of stating a precise requirement

我认为这不符合条件。

这些参数是路径、请求正文、查询字符串还是它们的组合?

这是一种非常不正统的记录方法,基本上无法解释。

API 提供者应该使用一种标准的 API 规范格式,例如 OpenAPI,而不是产生这种歧义。 (招摇),RAML , 或 API Blueprint .

面对你的情况,我完全不着急问清楚。

事实上,我会告诉 API 提供者这种级别的文档完全不能令人满意。

By default I suppose path parameters where it is possible

好吧,我最好的猜测是:

这些都是 body 参数。 POST 请求负载类似于:

{
    "PartNumber":"*",
    "SerialNumber":"6786,9879,8979"
}

这样做的原因-

我假设所有参数都是同一类型。如果这是真的,那么这两个可选参数使我得出结论,它们必须是主体参数,因为这通常是可选参数的建模方式。

因此,* 只是通配符查询词。

(n) 只是表示允许使用多个序列号值的笨拙方式。

问题是,我完全错了,所以去澄清一下。

关于c# - REST 接口(interface)参数规范中的术语不明确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41609039/

相关文章:

c# - 防止后续服务调用的协商握手

Laravel API : extremely long timeouts for external API

rest - 将TRestResponse内容转换为TFDJSONDataSets

java - Apache CXF 客户端访问多个资源

c# - 使用错误代码 MovedPermanently 和 Http 状态代码 MovedPermanently 发出请求时出错。服务没有返回更多错误信息?

c# - 从类库转换为 WCF 需要采取哪些步骤?

WCF 质询(在 IDispatchMessageInspector 接口(interface)的 AfterReceiveRequest 方法中)

c# - SplashScreen - 无法找到来自另一个项目的图像

c# - 向DataGridView添加行,只显示一行?

c# - 保持 session 事件 C#