Swagger for API Documentation

Develop RESTful Java Web Services Using Spring Boot Get Started with REST and Spring Boot
8 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$49.99
List Price:  $69.99
You save:  $20
€47.92
List Price:  €67.09
You save:  €19.17
£39.76
List Price:  £55.67
You save:  £15.90
CA$71.86
List Price:  CA$100.61
You save:  CA$28.75
A$79.95
List Price:  A$111.94
You save:  A$31.98
S$67.76
List Price:  S$94.87
You save:  S$27.11
HK$388.87
List Price:  HK$544.46
You save:  HK$155.58
CHF 44.66
List Price:  CHF 62.54
You save:  CHF 17.87
NOK kr565.88
List Price:  NOK kr792.28
You save:  NOK kr226.40
DKK kr357.50
List Price:  DKK kr500.54
You save:  DKK kr143.03
NZ$88.36
List Price:  NZ$123.72
You save:  NZ$35.35
د.إ183.61
List Price:  د.إ257.07
You save:  د.إ73.46
৳5,972.07
List Price:  ৳8,361.37
You save:  ৳2,389.30
₹4,246.46
List Price:  ₹5,945.38
You save:  ₹1,698.92
RM225.35
List Price:  RM315.51
You save:  RM90.16
₦77,461.50
List Price:  ₦108,452.30
You save:  ₦30,990.80
₨13,910.80
List Price:  ₨19,476.23
You save:  ₨5,565.43
฿1,709.72
List Price:  ฿2,393.75
You save:  ฿684.02
₺1,759.33
List Price:  ₺2,463.20
You save:  ₺703.87
B$304.23
List Price:  B$425.95
You save:  B$121.72
R915.31
List Price:  R1,281.50
You save:  R366.19
Лв93.65
List Price:  Лв131.12
You save:  Лв37.46
₩72,306.53
List Price:  ₩101,234.93
You save:  ₩28,928.40
₪182.68
List Price:  ₪255.76
You save:  ₪73.08
₱2,941.16
List Price:  ₱4,117.86
You save:  ₱1,176.70
¥7,821.18
List Price:  ¥10,950.28
You save:  ¥3,129.10
MX$1,003.69
List Price:  MX$1,405.25
You save:  MX$401.55
QR182.18
List Price:  QR255.07
You save:  QR72.89
P690.74
List Price:  P967.09
You save:  P276.35
KSh6,461.20
List Price:  KSh9,046.20
You save:  KSh2,585
E£2,543.65
List Price:  E£3,561.31
You save:  E£1,017.66
ብር6,381.64
List Price:  ብር8,934.81
You save:  ብር2,553.16
Kz45,890.82
List Price:  Kz64,250.82
You save:  Kz18,360
CLP$49,447.60
List Price:  CLP$69,230.60
You save:  CLP$19,783
CN¥364.74
List Price:  CN¥510.67
You save:  CN¥145.92
RD$3,043.26
List Price:  RD$4,260.81
You save:  RD$1,217.54
DA6,741.95
List Price:  DA9,439.27
You save:  DA2,697.32
FJ$115.80
List Price:  FJ$162.13
You save:  FJ$46.33
Q385.07
List Price:  Q539.13
You save:  Q154.06
GY$10,455.79
List Price:  GY$14,638.94
You save:  GY$4,183.15
ISK kr6,955.10
List Price:  ISK kr9,737.70
You save:  ISK kr2,782.60
DH502.98
List Price:  DH704.21
You save:  DH201.23
L918.26
List Price:  L1,285.64
You save:  L367.37
ден2,949.73
List Price:  ден4,129.86
You save:  ден1,180.13
MOP$400.09
List Price:  MOP$560.15
You save:  MOP$160.06
N$920.09
List Price:  N$1,288.20
You save:  N$368.11
C$1,839.03
List Price:  C$2,574.79
You save:  C$735.75
रु6,798.06
List Price:  रु9,517.84
You save:  रु2,719.77
S/186.09
List Price:  S/260.55
You save:  S/74.45
K202.66
List Price:  K283.74
You save:  K81.08
SAR187.79
List Price:  SAR262.92
You save:  SAR75.13
ZK1,383.09
List Price:  ZK1,936.44
You save:  ZK553.34
L238.52
List Price:  L333.95
You save:  L95.43
Kč1,204.37
List Price:  Kč1,686.22
You save:  Kč481.84
Ft19,842.53
List Price:  Ft27,781.13
You save:  Ft7,938.60
SEK kr551.51
List Price:  SEK kr772.16
You save:  SEK kr220.65
ARS$51,075.09
List Price:  ARS$71,509.21
You save:  ARS$20,434.12
Bs345.34
List Price:  Bs483.51
You save:  Bs138.16
COP$217,942.60
List Price:  COP$305,137.08
You save:  COP$87,194.48
₡25,214.88
List Price:  ₡35,302.85
You save:  ₡10,087.97
L1,268.63
List Price:  L1,776.18
You save:  L507.55
₲389,688.96
List Price:  ₲545,595.73
You save:  ₲155,906.76
$U2,236.96
List Price:  $U3,131.93
You save:  $U894.96
zł204.31
List Price:  zł286.05
You save:  zł81.74
Already have an account? Log In

Transcript

Now that we have done the RESTful web service, it's important to add API documentation to our service. Otherwise, when we share this to some customers who want to make use of our REST endpoints, now it is very difficult for them to read or understand our API's. And many of the occasions, we wouldn't be sharing the source code with them. So how do we do this? Now this is where you have a fantastic API called swagger. So if you go to swagger.io, you can learn about how API development is simplified with the documentation of swagger.

Now, I don't want to go too deep into how this works. But I want to show you how to add swagger to our application and get the API up and running. So the first thing we want to do is to get the swagger so if you go to spring initializer and look for swagger here, you may not see that now somehow Spring Boot does not have default dependencies included over Hear, so we may have to explicitly go to MV and repository comm and look for swagger to press enter. You can see it comes from IO dot spring Fox dot spring Fox swagger two, so I'm going to select that. And the current version happens to be 292. So I just have a copy this go back to our POM dot XML, add this as a dependency.

So I can go to the end of the dependency list here and paste it. Save this and now I have one dependency that is added. With this dependency we will be able to scan and get information about all the APS we have. If you want a graphical user interface that displays all the API's provide some testing options, then you have to add one more dependency which is from let's go to swagger UI and if To see that it's again from IO dot spring fork, spring fork swagger UI. The version also is the same thing 292. I copy that, once again, go back to my POM dot XML, add as the last dependency, save it, it's going to download the jar files for the same.

There are two more steps involved in enabling swagger. Number one, we go to application dot java. And we say that we want to enable swagger documentation. So I'm going to go here and then type at the rate enable swagger and it says enable swagger two, and we have to add a bean definition here. So now what is this bean definition? Now when we say enable swagger to it's going to look for an object that is going to scan your entire project for all the API's and then build the documentation.

Now this is called as a docket. And the way you do that is by typing public docket. So Docker is supposed to come from spring Fox documentations Spring dot web dot plugins. And then we can call any name we want. Let's call it as API. And we have to return some docket object.

So with the return new docket, and then we supply a, what version? So you can see that it says, What's the documentation type? That's argument. So we say your documentation type dot swagger one, or swagger two. So we want to say swagger two. Now, technically, we should be able to return this object and everything should be okay.

But this gives us configuration as well. Now we have to mark this as a bean. So that spring automatically instantiate this object. And then this Docker object can be used for reading the API documentation. Now to specify some configuration here we say here dot select, and then this is what to say, what appears to be selected which says select the API's like dot API's and Then say what are the AP is that we want to document and we say any request handlers or dates such as the get mapping, post mapping, etc. So we want that.

So we say Request Handler, selectors, dot any saying that any type of handlers we want. And then we also say any type of paths that we want to specify. And again, you can say path selector of any. Now, once again, we are seeing that we want to just document everything. But here is where instead of saying any I can add some filter saying that a provide documentation for only get handlers not for post, or I can say slash API slash secured should not be included, etc, etc. I can do that.

And then I can say, bill to finally build this. So the lot of documentation configuration you can do over here. Then let's let's see, what is the error here? So we see some kind of a console log. Let's see what is that It is your class not found docket. So this could be because when we actually added the Maven dependencies it was still building.

So we may have to stop this once. Let's clear the console and run the application once again and see if everything is okay. Alright, looks like everything is fine. It's being scanning, you can see that scanning for API listing references. tonker has been started application has been started in 10 seconds. So I'm going to go back to the browser and first look for something like localhost 7777 slash, and then I type your v2 slash API docs.

Now, this is where you will be able to see some JSON documentation, representing a lot of information. Let's copy this and open in postman let's paste it press enter, you can see that it's going to give me a JSON representing lots of API URLs. Now, this is not very useful for us. But this is going to be used by swagger UI. So how do I get into that? Very simple, you just have to say your swagger UI dot html.

But when I press enter, you can see we get Hello Spring Boot. And this is because we have mapped the slash to this particular Hello Spring Boot. Now what I can do is I can just change this to slash Hello. So that when slash Hello is lost. This is the answer that we're going to get. If you are accessing the root of your service, then swagger UI should give the response so now if I explicitly access slash Hello, we get this Hello Spring Boot.

But if I say your swagger UI dot html, and now you should see that we got an APA documentation over here. Now the APA document Addition includes application which has a slash Hello, as one API. There is a basic error controller. Now, we did not configure any error controllers. But if we do that we will get, but there is a slash error with all get head post, etc. So this is not configured by us.

But you can see customer rest controller. That's the name we gave in our application. So if it's expanded, you have slash API customers get all customers is a function of the handler for the same. There's a post for API customers, there's a get put and delete for this particular URL. If you select API customers, you can see that I'm able to supply some parameters. Also here, it says there's an underscore limit underscore page as query string parameters that are optional, because there's a default value of 10 and one here respectively.

These could be the possible responses if it is 200. There's going to be okay. Example values and so on and so forth. Now, what you can do is you can also test the same thing by Clicking on try it out. So let's do that. When I do that it says, These are the two values defaults Do you want to execute, let's execute and see.

And it comes back and say, Hey, this is how you do a C URL or curl. So like on a Macintosh or Linux, I can just copy this and paste and I should be able to get it on a terminal. But if you want to access from the browser, this is going to be and this is the response that we got, or we were supposed to get when we make a request. And of course, there's some options to download, and so on and so forth. So this is how you use swagger to create API documentation for all your micro services.

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.