Wymagania: Jeśli w parametrze znajduje się typ enum, interfejs zwróci błąd "400 Bad Request", ponieważ Refit domyślnie konwertuje enum w obiekcie na ciąg znaków, a interfejs nie może przekonwertować tego ciągu na błąd enum, w następujący sposób:
{ "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "tytuł": "Wystąpił jeden lub więcej błędów walidacyjnych.", "status": 400, "traceId": "00-3aef79a91ce9c41883953c9aaccb48a-68917b547ba8a2e5-00", "błędy": { "req": [ "Wymagane jest pole wymagane." ], "$.languagePermissions": [ "Wartość JSON nie mogła zostać przekonwertowana na LanguagePermissionsEnum. Ścieżka: $.languagePermissions | LiniaNumer: 0 | BytePositionInLine: 145." ] }
}
Oficjalne wyjaśnienie jest takie, że domyślnie konwertowanie enumów na stringi jestZwiększanie czytelności i ułatwianie odczytu informacji o parametrach。 Odniesienie:Logowanie do linku jest widoczne.
Domyślne zachowanie polega na serializacji enum do ciągu ciągów, co można zmienić, podając serializerowi własne ustawienia:Logowanie do linku jest widoczne.
Więc przekazujemy niestandardowe ustawienia Refit i nie używamy domyślnych ustawień, usuwamyJsonStringEnumConverterKonwerter działa dobrze, kod jest następujący:
Rozwiązanie:Logowanie do linku jest widoczne. (Koniec)
|