The 3 REST API Maturity Levels
2:43
9 сағат бұрын
Stop Calling Your API a "REST API"
17:42
16 сағат бұрын
Winglang in 10 minutes
11:39
8 ай бұрын
.NET in 300 seconds
5:48
8 ай бұрын
DDD's Holy Grail
13:38
8 ай бұрын
Clean Code Sucks?
8:14
11 ай бұрын
How Sharp is Your C#? | Riddle #2
3:45
Пікірлер
@suhutwadiyo
@suhutwadiyo Сағат бұрын
Mantappp
@Whojoo
@Whojoo Сағат бұрын
Quick question, why was Patch skipped? I don't think it was mentioned in the video and it is a http method I see being used by several applications by different companies.
@amantinband
@amantinband 32 минут бұрын
I talked about it briefly but ended up cutting it due to time constraints
@ryan-heath
@ryan-heath Сағат бұрын
Very concise and high quality. Love it!
@bartlomiejuminski
@bartlomiejuminski 2 сағат бұрын
quality video thank You
@SerafimMakris
@SerafimMakris 2 сағат бұрын
if someone ask me to explain the http again i will send it this url without subject or title. :D :D Tnx. Amichai for the content.
@desenvolvimentoetecnologia
@desenvolvimentoetecnologia 2 сағат бұрын
Nice content!! Can't wait for more of this!
@tchial0
@tchial0 3 сағат бұрын
Finally
@lucaciandrei
@lucaciandrei 3 сағат бұрын
Yes, finally, more. <3 Thanks Amichai
@programmingloop7
@programmingloop7 17 сағат бұрын
I tried obsidian and found it to lack a lot of basic features. Perhaps with plugins I can make it work but the time that it takes to set everything up and relearn keyboard shortcuts it's not worth it. I decided to just use vscode which I am already familiar with, has great search, markdown etc
@bobweiram6321
@bobweiram6321 20 сағат бұрын
Man, too many Ads!
@kennyfully88
@kennyfully88 21 сағат бұрын
Up until now, I never ever had to use this tool. However, I keep hearing about how great it is... So I'm giving it a fair try... Hopefully I'll remember this video and post an update about how I feel after 1 week.
@evergreen-
@evergreen- Күн бұрын
Too much typing. Different classes for IDs??!
@francescolasaracina3964
@francescolasaracina3964 Күн бұрын
This is kinda like the Either Monad used in the functional programming world, but translated into OOP
@okcharles7
@okcharles7 Күн бұрын
Thanks for sharing your valuable knowledge. However, it is likely that your db context is only proper for adding rows into db but quite bad for querying with LINQ onto DbSets. For example, what if a host wants to find their guests who attended dinners where were served menus with sections whose name contains "sweets"? This job would be much easier if EF entity model had navigation properties in type of related entities, instead of their ids. I think that happens because all of your aggregate roots are bounded in the context of creating something as all of your codes says. As such, it will be better to move all items in BuberDinner.Domain into BuberDinner.Domain.Creating, which better represents your code purpose.
@BolteDev
@BolteDev Күн бұрын
Nice video, would you be kind enough to let me know what you are using to highlight/annotate on your video?
@allanhouston22
@allanhouston22 2 күн бұрын
It sucks. We shouldnt be throwing exceptions on validation
@moritzvogel6450
@moritzvogel6450 2 күн бұрын
We actually use Hypermedia in our company, and it really has some nice benefits that you just get as an effect :) Change the key of an entity? No problem, no changes in the client required
@PierreThierryKPH
@PierreThierryKPH 2 күн бұрын
People do implementation real REST APIs. Please dont lie to justify your wrong use of the term or your unwillingness to implement REST properly. REST never became something else. It has a clear definition and people either match the definition or they don't.
@derDooFi
@derDooFi 2 күн бұрын
when i saw the blue status bar with the green button in the lower left corner, for a second i thought i was looking at Windows XP
@m12652
@m12652 3 күн бұрын
Isn't sending back 11,000 lines of json a bit excessive. You're assuming it's all needed when chances are not even a couple of hundred lines are require. I mean just coz someone hits your api it doesn't mean they're going to use all the functionality.
@luisdanielmesa
@luisdanielmesa 3 күн бұрын
This guy keeps yelling "gold!" but is making money selling shovels. XD
@xeschire706
@xeschire706 3 күн бұрын
I wish I could use hakai right now.
@xeschire706
@xeschire706 3 күн бұрын
"Clean architecture" I still very dumb, how design programming languages that allow you to get away with as many optimizations as you, but still allows for the code to remain maintainable, & also teaching people to be able to read, & comprehend optimized code in the first place, instead of teaching them, this bloated, bug written, slow as molasses corporate nonsense, that is highly subjective anyway. No, "clean architecture" is not good at all.
@netssrmrz
@netssrmrz 3 күн бұрын
Good video. Regarding the subject, the term "maturity level" sounds conceited to me. How many of the other protocols not running on port 80 and 443 do you think use HTTP methods? I'm guessing none. And If there was a dedicated port for browser APIs I'd bet it wouldn't be based on HTTP or REST.
@devmarkmonster
@devmarkmonster 3 күн бұрын
I only did level 3 once, it was a lot of work to make it work nicely according to the standards. In the end we noticed that the supplier that created the ios and android apps more or less ignored the links that we so carefully put in the response, when we thought of changing an endpoint that wouldn’t break because our users would get it out of the links section we had to rollback the release. So sticking with level 2 for now until a requirement for 3 shows up.
@alexboc74
@alexboc74 3 күн бұрын
Very nice video! Just a question out of scope, which software are you using to draw on the screen ? Its really cool!
@tar-yy3ub
@tar-yy3ub 3 күн бұрын
I love obsidian but I really don't see the point of copy pasting things from a search engine into your vault. Sure, you can now access it offline, but you can literally just google it again? There is a real risk your vault gets full of copy pasted stuff and then it becomes hard to surface your actual notes
@eramires
@eramires 4 күн бұрын
I like the Result Pattern, but I prefer to use my own implementation, instead of having a dependency for something so simple to implement, takes away all the joy in coding things myself. But for all the lazy people out there, sure, its useful. 🙂
@SpaceShot
@SpaceShot 4 күн бұрын
I'm curious what your thoughts are on apis where the parameters are to be kept confidential. In other words, while from a technical perspective one could create uris that represented the resources meeting a level 2 maturity model, it is desired to keep those parameters hidden. Second, it doesn't seem wise to use GET with request bodies to gain TLS support for that encrypting that data. Otherwise, remaining principles are all fine. Do we simply say well, we can't use this and move on, or am i being short sighted about something? Don't get me wrong, I am all for using the terms correctly and it has never bothered me to say I'm building a Web API to contrast it from REST. Just wondering if i need to rethink the scenario because I'm missing something.
@ansgarhellwig6700
@ansgarhellwig6700 3 күн бұрын
Query parameters are already encrypted when using TLS (HTTPS), what do you mean by "hiding" those parameters?
@deeplerg7913
@deeplerg7913 4 күн бұрын
Nice! No bs, straight to the point. Not trying to artificially prolong the video with long-winded explanations. Just how it should be.
@tchial0
@tchial0 4 күн бұрын
I like the way you come up with theories and origins before you get your hands dirty with code.
@tchial0
@tchial0 4 күн бұрын
A video of creating a level 3 API from scratch would be
@ludwintor4986
@ludwintor4986 4 күн бұрын
isn't open api specification is a same thing but more informative and this just didn't bloat each response with that that "_links" property?
@amantinband
@amantinband 4 күн бұрын
No, the premise is having the server dynamically drive the client’s next actions
@psdmaniac
@psdmaniac 4 күн бұрын
I hate religion in development... This is not the Scrum-ish, this is not the REAL REST. Why do people want to use HATEOS in the first place? Most clients (like native mobile aps) will not use it anyway because it gives ONLY complications. If you have Id of the product just call the endpoint without an additional call to "discover" the endpoint. In my opinion, it is better to focus on the working, maintainable product delivered on time, quality and budget not on overengineering and "hyped" solutions.
@amantinband
@amantinband 4 күн бұрын
Yep. “tools, not rules”
@PierreThierryKPH
@PierreThierryKPH 2 күн бұрын
Why do people use HATEOAS? Because loose coupling is a huge advantage, because it makes the design more flexible on both sides.
@psdmaniac
@psdmaniac 2 күн бұрын
​@@PierreThierryKPHYou are still coupled to data structures returned by endpoints, you still need to have hardcoded urls to "List" endpoints. This is not a lose caupling. In real life everything else is changing more often than urls. If backend side change something there is probability of 99% it will be an entire new endpoints or data structure in existing endpoint and in most cases you still need to change client code to handle this. Hateos is the theory that meets practice and fails 😂
@PierreThierryKPH
@PierreThierryKPH 2 күн бұрын
@@psdmaniac actually you only need one hardcoded URL, it's not often you need several entry points. And I wonder if there's any data backing your theory that every time URLs would change, it means a change so large that the client would need changing too. On the only service that doesn't do HATEOAS in my team, we actually needed to move some actions to a different backend service without changing the protocol and it's a pain. With HATEOAS, it would have been trivial.
@MrDiscussion
@MrDiscussion 5 күн бұрын
I have a question. We create a User as a domain model which is then used by the Application layer, IUserRepository. When the interface later is used by the Infrastructure Layer UserRepository, we use the User domain class due to it being on the method contracts. There is an indirect reference from Infrastructure --> Domain due to us referencing Infrastructure --> Application --> Domain which is fine as we cant avoid it. However, in this case the Infrastructure now need to know about the domain layer and also need to reference it as a using. Is this not bad from a clean architecture perspective?
@MrDiscussion
@MrDiscussion 5 күн бұрын
Maybe we introduce dtos or something to not expose the domain classes outside of our application layer?
@Petrovich2049
@Petrovich2049 5 күн бұрын
Someone tell this Roy that OpenAPI specs exist…
@azir8930
@azir8930 6 күн бұрын
Hi, amazing work! Is there any promo code for DDD course?
@azir8930
@azir8930 6 күн бұрын
Never mind, I bought the bundle, and the promo code was only for the Deep Dive.
@aj-kr9fe
@aj-kr9fe 6 күн бұрын
Guys I need some help: In which project do you put the models and the db context from the database?
@nayanchoudhary4353
@nayanchoudhary4353 6 күн бұрын
As soon as the video started, I tried wiping the white dirt on my screen... Only to realise that it was Amichai's mouse pointer 😂
@NickSteffen
@NickSteffen 6 күн бұрын
Yea, Roy doesn't realize is that no one owns terms and words in a language, not even the person who invented them. It was also a term invented in a different era, when projects had very different goals and requirements. The industry after millions of man hours of determining which components of Roy's original specification work in real modern projects, which don't and adding many others has decided what REST means today. The REST described by Roy Fielding is an anachronism from a bygone era, attempting to steal a valuable term that is well used in the modern world. The world changes, words change, meaning changes, Roy was once right, but he is now wrong about the meaning of REST.
@PierreThierryKPH
@PierreThierryKPH 2 күн бұрын
Actually, most people don't know about the definition of REST and didn't determine what part of REST work. People who understand REST do implement it and reap the benefits of this architecture style. It's as relevant today as it was when it was invented.
@TheophilusQuaicoe-king26
@TheophilusQuaicoe-king26 6 күн бұрын
what is the name of the tool used for the event storming
@user-hn1ph6ry8l
@user-hn1ph6ry8l 6 күн бұрын
Aha! Actually, I feel something wrong about generic error message and this looks like cleverer than Idea to wrap any response as 200 with status inside answer. It's all about multi-used HTTP statuses - its pain in real infrastructure. We are get 400 on API request. Ok, why really return it? May be proxy, may be internal routers, cache server etc. But seems "problem"-way can fix it.
@fifty-plus
@fifty-plus 6 күн бұрын
The BFF concept conflated REST with any API you might write removing any meaning from the nomenclature in a technical discussion.
@youssefwael8
@youssefwael8 6 күн бұрын
When you mentioned the HATEOAS and that REST APIs should expose an endpoint that contains all available actions to be taken, I think of Swagger and its UI. I think Swagger is the modern approach as it complies with the definition of HATEOAS, it exposes an endpoint with all metadata and interfaces. What do you think?
@chilversc
@chilversc 6 күн бұрын
That still wouldn't count though as that's developer documentation. Under HATEOS and REST as per the original definition I would be able to change all the routes/URLs on my server and clients would still work without needing to be updated. Maybe one day I wake up, decide I prefer kebab case in my URLs and push out an update. The way we currently write REST APIs your client would break. You would then have to read the new swagger docs and update your client. Under HATEOS that wouldn't be required as your client would get the new links from the server.
@Luismvm90
@Luismvm90 6 күн бұрын
I mean realistically the APIs that truly implement REST are often referred as RESTful APIs, everything else we just typically refer as REST APIs. The distinction already exists, even if diverged from it's original meaning/definition and took on a new name representation.
@PierreThierryKPH
@PierreThierryKPH 2 күн бұрын
People called non hypermedia APIs both REST and Restful. Both terms are used in complete ignorance of the definition of REST.
@botondvasvari5758
@botondvasvari5758 6 күн бұрын
good morning
@yaniv242
@yaniv242 6 күн бұрын
HATEOS
@augustincalin
@augustincalin 7 күн бұрын
Assembling entities (models) into aggregates based on invariants (validation rules) makes sense when you think about EF dbcontexts: if you have a valid aggregate in memory, you can have it in a dbcontext; and if you have it in a dbcontext you just teleport it into the database and you know it's still valid there. But what happens if you have invariants which are overlapping, like, for instance Guest - Reservation and Guest - Allergy? Will be ok if User will be part of 2 aggregates? Should I buy the course to find the answer on this? 🫣
@zagoskintoto
@zagoskintoto 7 күн бұрын
So RESTless APIs! lol Unrelated question: does anyone know the name of the app he uses to draw on the screen?
@ryan-heath
@ryan-heath 6 күн бұрын
Maybe excalidraw?
@zagoskintoto
@zagoskintoto 6 күн бұрын
@@ryan-heath I'm sorry I meant the overlay that allows him to draw anywhere on the screen, like those arrows and boxes with multiple colors he uses in other videos too when showing code
@osmantas369
@osmantas369 6 күн бұрын
He replied in one of his videos. Presentify which runs on macos.
@zagoskintoto
@zagoskintoto 6 күн бұрын
@@osmantas369 Thanks! didn't chat that one
@user-bx2er2zx5u
@user-bx2er2zx5u 7 күн бұрын
I am a student programmer in the exam I was asked by the professor what is HATEAOS . I said let's say we have a bank application, it gives us a single path to all possible transactions. And if for example I try to find out the operations with current balance, having 0 on my account, the operation “withdraw money” will not be available. The professor asked what would happen if at the time of the call there was 0 on the account, but after the call the money was deposited. I said that we should make a request again. He said that I was wrong, I don't know what HATEOAS is and sent me for retest. What am I wrong?