4

我有一个公开枚举的 RESTful 服务。

我应该将它们公开为本地化字符串还是纯整数?

我倾向于整数以便在服务端轻松转换,但在这种情况下,客户端需要从某个地方获取本地化字符串列表才能知道枚举的含义。我只是白白地创造了额外的步骤吗?

似乎很少有关于 RESTful API 中常用的信息。

编辑:

好的。假设我正在编写一个存储有关人们宠物的信息的网站。我可以有一个 AnimalType 枚举

0 Dog
1 Cat
2 Rabbit 
etc.

例如,当人们获取特定的宠物资源时,我可以为动物类型提供一个有意义的本地化字符串,或者只提供 ID 并强制他们通过资源/pets/1进行另一次查找。/pets/types

或者我应该两者都提供?

4

2 回答 2

3

我想您应该考虑要向客户公开的一致的 RESTful API。

您自己是否在代码中使用枚举是一个实现细节。您的客户是否会在他的实现中使用枚举,您既不知道也不应该打扰您,因为这只是不同的抽象级别。

首先是 API 设计,然后是实现。

如果您更深入地了解您希望使用这些枚举返回给您的客户的信息类型,我可以给出更直接的答案。

现在我猜如果整数 id 和字符串描述与描述信息或您想要在调用 RESTful 资源时返回的状态相关,那么您应该将它们都包装在 json 或 xml 文档中。

于 2012-12-15T14:51:26.197 回答
2

如果目的是让 API 使用者以编程方式使用这些值(即根据它们做出决定),我会使用未本地化的字符串(并确保它们有据可查且稳定)。枚举值未在本地开发框架中本地化,开发人员习惯于处理此问题,不确定为什么 Web API 会有所不同。

如果目的是让 API 使用者向用户显示这些值,我会使用本地化字符串。

如果打算同时做到这两点,我会使用未本地化的字符串 (ID),但考虑提供单独的 API 端点/资源(甚至是离线文档)来将这些 ID 映射到本地化字符串。

如果出于某种原因您真的关心消息大小(例如,您在一条消息中有数千个这样的东西,而且这是一个移动场景),那么我才会考虑使用数字 ID。

于 2012-12-17T05:02:09.373 回答