如何向Web API Web服务发送GUID

12

我正在为一个Web服务扩展ApiController

该服务只接受GUID作为参数。这是我要输入的URL。

/api/texts/2ADEA345-7F7A-4313-87AE-F05E8B2DE678

然而,Guid从未到达Get方法。

如果我将其设置为对象

public Object Get(Object userId)

该方法触发,但userid为null。

如果我将其设为guid

public Object Get(Guid? userId)

我遇到了错误

控制器'texts'上找不到与请求匹配的任何操作。

有人有可以帮助我的示例吗?


你尝试过将字符串作为参数吗? - Fals
1个回答

34

我猜你正在使用默认路由,其模式为:

api/{controller}/{id}

所以尝试相应地命名您的参数:

public TextsController: ApiController
{
    public HttpResponseMessage Get(Guid? id)
    {
        ...
    }
}

现在 /api/texts/2ADEA345-7F7A-4313-87AE-F05E8B2DE678 URL 应该命中 TextsController 上的 Get 操作,并填充 id 参数。


感谢@darin-dimitrov提供的简洁答案。但我有一个问题,将GUID传递给RESTful服务是否是正确的方法?我打算在我的GET服务中使用GUID。但它有32个字符长度,除此之外,它是否违反了任何语义意义或设计模式? - Pandiarajan
1
我不这么认为,@Pandiarajan,你可以舒适地使用它。实际上,使用GUID或整数ID取决于您检索的内容。我的意思是根据数据的重要性从高到低进行选择。 - Abdurrahman I.
@AbdurrahmanI。该Guid表示通信的关联ID。由WebApi的使用者生成,以确保幂等性。 - Pandiarajan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接