Comments (6)
From my perspective 204
should be always by design. So when i want to handle 204 i just don't require any response type (in Sandwich that could be represented by a Unit
type maybe? (I'm not 100% sure about that, but maybe Sandwich could allow 204 as a success only if return type is Unit
? Is that even possible in kotlin, not sure here :) ).
Or maybe different response handling type, something like NoContentApiResponse
instead of ApiResponse
. That seems to me like fine explicit solution to that. That way programmer always have to explicitly declare that they do not expect body.
from sandwich.
Hi, @jakoss
Your issue is very worth agenda to discuss in this APIs.
The data
property in the ApiResponse.Success
will be null if the response has been succeeded, but the body data is empty (e.g., 204-No Content). So I designed following the Retrofit
's interfaces at the beginning.
I was thought of implementing another expression for handling the empty body response like onComplete
and changing the type of the data to non-nullable. But it was a little questionable whether it is efficient to create a new expression for handling empty body responses in another way because we can handle both cases in the onSuccess
expression.
If you have an idea for handling the empty body cases, I hope to get any feedback for supporting better interfaces! :)
from sandwich.
You're right. :) And moreover, we don't require to handle the data when the 204
response case, which means also we don't need to check the nullability. (For the 204
response case, we don't need to access the data property at all).
I'm considering changing the type of the data property to non-null, and It will throw NoContentException
when trying to access the body is null. Also, I'm considering implementing onComplete
scope function to handle which has no response receivers for processing only the no-content
case.
Thanks for sharing your feedback :)
from sandwich.
Throwing on body access while in 204 seems fine. Like I said, it should always be by design anyway
from sandwich.
@jakoss
This feature has been included in the 1.2.0-SNAPSHOT
and it will be released on the next version.
Thank you for your discussion and issue!
from sandwich.
Released a new stable 1.2.0
.
from sandwich.
Related Issues (20)
- After enable R8 full mode getting ParameterizedType error HOT 7
- Maven Central Gradle 8 compatibility
- java.lang.RuntimeException: Failed to invoke private com.skydoves.sandwich.ApiResponse() with no args HOT 4
- How do I use Sandwich if the json is not a standard? HOT 8
- Retrofit multipart HOT 1
- Parse non-standard json HOT 7
- Why is this error not intercepted
- Why is this error not intercepted HOT 1
- Issue with the ApiResponse.Failure<*> HOT 1
- On Failure should return the Failure Sealed class HOT 5
- Support usage in vanilla JVM projects HOT 3
- Change parameter for map in ApiSuccessModelMapper HOT 1
- [ASK] Is there any feature that is equivalent to Single in sandwich? HOT 4
- [ASK] How can I handle 200 but error case? HOT 3
- [ASK] How can I get throw exception as onError/onFailure/onException in ViewModel ? HOT 1
- How to get custom error from my server? HOT 1
- [Help] Is it the best approach to validate responses? HOT 2
- Dependency Dashboard
- EmptyBodyInterceptor doesn't work with GsonConverterFactory HOT 6
- java.lang.NullPointerException:::sandwich.ApiResponse$Failure$Error.toString HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sandwich.