相关疑难解决方法(0)

带请求正文的HTTP GET

我正在为我们的应用程序开发一个新的RESTful Web服务.

在某些实体上执行GET时,客户端可以请求实体的内容.如果他们想要添加一些参数(例如排序列表),他们可以在查询字符串中添加这些参数.

或者,我希望人们能够在请求正文中指定这些参数. HTTP/1.1似乎没有明确禁止这一点.这将允许他们指定更多信息,可以更容易指定复杂的XML请求.

我的问题:

  • 这完全是一个好主意吗?
  • HTTP客户端在GET请求中使用请求主体会有问题吗?

http://tools.ietf.org/html/rfc2616

rest http http-get

1896
推荐指数
19
解决办法
98万
查看次数

用于搜索的RESTful URL设计

我正在寻找一种合理的方式将搜索表示为RESTful URL.

设置:我有两个模型,汽车和车库,汽车可以在车库.所以我的网址看起来像:

/car/xxxx
  xxx == car id
  returns car with given id

/garage/yyy
  yyy = garage id
  returns garage with given id
Run Code Online (Sandbox Code Playgroud)

汽车可以独立存在(因此/汽车),也可以存在于车库中.例如,在给定车库中代表所有车辆的正确方法是什么?就像是:

/garage/yyy/cars     ?
Run Code Online (Sandbox Code Playgroud)

车库yyy和zzz中的汽车联盟怎么样?

什么是代表搜索具有某些属性的汽车的正确方法?说:给我看看所有带4扇门的蓝色轿车:

/car/search?color=blue&type=sedan&doors=4
Run Code Online (Sandbox Code Playgroud)

或者它应该是/汽车而不是?

使用"搜索"似乎不合适 - 什么是更好的方式/术语?应该只是:

/cars/?color=blue&type=sedan&doors=4
Run Code Online (Sandbox Code Playgroud)

搜索参数应该是PATHINFO还是QUERYSTRING的一部分?

简而言之,我正在寻找跨模型REST网址设计和搜索的指导.

[更新]我喜欢贾斯汀的答案,但他没有涉及多字段搜索案例:

/cars/color:blue/type:sedan/doors:4
Run Code Online (Sandbox Code Playgroud)

或类似的东西.我们怎么样

/cars/color/blue
Run Code Online (Sandbox Code Playgroud)

到多场案件?

rest

413
推荐指数
7
解决办法
18万
查看次数

Web API路由支持GUID和整数ID

如何支持GETGUID和整数的路由?我意识到GUID不是理想的,但它现在就是它.我想添加对整数的支持,以便用户更容易记住和传达应该是唯一的"密钥".

示例路线:

testcases/9D9A691A-AE95-45A4-A423-08DD1A69D0D1   
testcases/1234
Run Code Online (Sandbox Code Playgroud)

我的WebApiConfig:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();
    var routes = config.Routes;

    routes.MapHttpRoute("DefaultApiWithAction", 
        "Api/{controller}/{action}");

    routes.MapHttpRoute("DefaultApiWithKey",
        "Api/{controller}/{key}",
        new { action = "Get" },
        new { httpMethod = new HttpMethodConstraint(HttpMethod.Get), key = @"^\d+$" });

    routes.MapHttpRoute("DefaultApiWithId", 
        "Api/{controller}/{id}", 
        new { action = "Get" }, 
        new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });

    routes.MapHttpRoute("DefaultApiGet", 
        "Api/{controller}", 
        new { action = "Get" }, 
        new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });

    routes.MapHttpRoute("DefaultApiPost", 
        "Api/{controller}", 
        new { action = "Post" }, …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api asp.net-web-api-routing

20
推荐指数
1
解决办法
1万
查看次数

ASP.net WebApi新注册的路由说,该请求无效

我正在为Windows Phone 8.1应用设置后端。我正在使用ASP.net WebApi创建用于从数据库访问数据的RESTful api,该API是在Windows Azure上设置的

这是我的路线的样子:

 // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        config.Routes.MapHttpRoute(
            name: "DefaultNamedApi",
            routeTemplate: "api/{controller}/{name}",
            defaults: new { name = RouteParameter.Optional }
            );
Run Code Online (Sandbox Code Playgroud)

我想要实现的是不使用整数访问数据-我想使用字符串访问数据。这是我的WebApi控制器的代码:

 private SmokopediaContext db = new SmokopediaContext();

    // GET api/Images
    public IQueryable<ImageModel> GetImageModels()
    {
        return db.ImageModels;
    }

    // GET api/Images/5
    [ResponseType(typeof(ImageModel))]
    public IHttpActionResult GetImageModel(int id)
    { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net rest azure asp.net-web-api

2
推荐指数
1
解决办法
3290
查看次数