首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >API中的自定义搜索

API中的自定义搜索
EN

Stack Overflow用户
提问于 2016-02-18 16:57:26
回答 1查看 92关注 0票数 0

我有一个API,它有超过6个字段的自定义搜索,大致如下所示,尽管我在其他地方使用相同类型的搜索时,也可能包含敏感数据。

  • 用户名
  • 电子邮件
  • 名字
  • 姓氏
  • 部门

我通常使用RESTful方法,因此对于用户列表或单个用户,检索用户将类似如下所示

代码语言:javascript
运行
复制
GET /user
GET /user/1

然而,对于搜索,我对如何允许这一点略感困惑。我的初衷是在请求体中使用JSON,例如

代码语言:javascript
运行
复制
{
    "username": "someuser",
    "department": "sales"
}

不过,我不能使用看起来合乎逻辑的请求体(以及用于POST等操作的请求体),因为据我所知,Chrome不支持它(或者至少不支持用于测试的PostMan插件)。

因此,执行此搜索的最佳方式是什么?

我看到的选择

使用报头

这似乎是头的“错误”使用,但也是最接近于O刚al请求体的。

使用中的参数

例如

代码语言:javascript
运行
复制
GET /user?username=someuser&department=sales

但是控制器(使用C# Web )会变得很混乱,因为我不能将项目保留为空白。所以请求会更像这样,除非我有大量被覆盖的方法来处理不同的排列。这看起来..。凌乱的

代码语言:javascript
运行
复制
GET /user?username=someuser&email=&firstname=&lastname=&department=

也许更重要的是,它留下了一点太明显的“背靠背”:这是在医疗保健环境中,虽然有不可避免的时间显示的东西,我宁愿保持在最低限度(数据本身,自然是SSL加密传输)。

使用不同的HTTP谓词

我可以使用POST或其他动词,但这是违反直觉的,并且违背了RESTful方法(据我所知)和我自己在项目中的标准,所以可能会令人困惑。

还有其他人碰到这个吗?什么是“官方”或最好的方法来处理它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-18 17:08:56

没有真正的“官方”方式。在这种情况下,我只会稍微扭曲休息的规则,只使用一个post,传入一个身体就是POST方法的作用。

对于来自Chrome的不支持:这在Chrome以及PostMan扩展中都是完全支持的(您需要选择一个POST方法并为主体选择raw选项,然后选择JSON)

另一方面,查询字符串也是一个很好的选择。通过在控制器中使用默认参数,可以拥有空项:

代码语言:javascript
运行
复制
public ActionResult Search(string userName = "", int departmentId = 0)
{
    ...
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35487725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档