Wiki source code of 2 - API:n / Rajapinnan julkaisu
Last modified by Xwiki VePa on 2024/02/07 07:37
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{layout}} | ||
| 2 | {{layout-section ac:type="two_right_sidebar"}} | ||
| 3 | {{layout-cell}} | ||
| 4 | (% style="color: rgb(68,68,68);text-decoration: none;" %)Tässä ohjeessa kerrotaan ohjeet rajapinnan julkaisemiseen HY:n Api gateway alustassa. | ||
| 5 | |||
| 6 | == (% style="letter-spacing: -0.008em;" %)1 API-Gateway alusta(%%) == | ||
| 7 | |||
| 8 | (% style="letter-spacing: -0.008em;" %)Mikäli haluat tietää yleiskuvauksen valitusta API-gateway alustasta, niin käy lukemassa ensimmäinen ohjesivu: [[doc:SO.Sovelluskehittäjän ohjeet.Integraatiot.API-Gateway.1 - API-Gateway (Gravitee) yleiskuvaus.WebHome]]. | ||
| 9 | |||
| 10 | == 2 API-hallinta == | ||
| 11 | |||
| 12 | Helsingin yliopisto on laatinut API-hallintamallin, jossa linjataan, mitä API:n julkaisussa on syytä huomioida ja millä tavoin API-hallintaa toteutetaan. Mikäli et ole vielä tutustunut API-hallintamalliin, on voi siihen tutustua siihen ennen API:n julkaisua. | ||
| 13 | |||
| 14 | [[doc:SO.Sovelluskehittäjän ohjeet.Integraatiot.API-Gateway.1 - API-Gateway (Gravitee) yleiskuvaus.API-hallintamalli.WebHome]] | ||
| 15 | |||
| 16 | == 3 Checklist / tarkistuslista ennen rajapinnan julkaisua == | ||
| 17 | |||
| 18 | Ennen julkaisua on syytä tarkistaa seuraavat kohdat ennen julkaisun tekemistä. | ||
| 19 | |||
| 20 | (% class="relative-table wrapped" %) | ||
| 21 | |(% class="highlight-blue" style="text-align: left;" colspan="5" data-highlight-colour="blue" %)(% class="highlight-blue" style="text-align: left;" colspan="5" data-highlight-colour="blue" %) | ||
| 22 | ((( | ||
| 23 | ==== 1 Ohjeiden lukeminen ja pääsy API-gateway alustaan ==== | ||
| 24 | ))) | ||
| 25 | |(% class="highlight-blue" style="text-align: left;" colspan="2" data-highlight-colour="blue" %)(% class="highlight-blue" style="text-align: left;" colspan="2" data-highlight-colour="blue" %) | ||
| 26 | ((( | ||
| 27 | **Mikä** | ||
| 28 | )))|(% class="highlight-blue" style="text-align: left;" colspan="1" data-highlight-colour="blue" %)(% class="highlight-blue" style="text-align: left;" colspan="1" data-highlight-colour="blue" %) | ||
| 29 | ((( | ||
| 30 | **Tarkennus** | ||
| 31 | )))|(% class="highlight-green" style="text-align: left;" colspan="1" data-highlight-colour="green" %)(% class="highlight-green" style="text-align: left;" colspan="1" data-highlight-colour="green" %) | ||
| 32 | ((( | ||
| 33 | **Tarkistettu (pvm)** | ||
| 34 | )))|(% class="highlight-green" style="text-align: left;" colspan="1" data-highlight-colour="green" %)(% class="highlight-green" style="text-align: left;" colspan="1" data-highlight-colour="green" %) | ||
| 35 | ((( | ||
| 36 | **Huomioita** | ||
| 37 | ))) | ||
| 38 | |(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 39 | ((( | ||
| 40 | 1a | ||
| 41 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 42 | ((( | ||
| 43 | API-gateway alustan yleiskuvauksen lukeminen (suositus) | ||
| 44 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 45 | ((( | ||
| 46 | \\ | ||
| 47 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 48 | ((( | ||
| 49 | \\ | ||
| 50 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 51 | ((( | ||
| 52 | \\ | ||
| 53 | ))) | ||
| 54 | |(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 55 | ((( | ||
| 56 | 1b | ||
| 57 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 58 | ((( | ||
| 59 | API-rajapinnan julkaisuohjeen lukeminen (suositus) | ||
| 60 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 61 | ((( | ||
| 62 | \\ | ||
| 63 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 64 | ((( | ||
| 65 | \\ | ||
| 66 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 67 | ((( | ||
| 68 | \\ | ||
| 69 | ))) | ||
| 70 | |(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 71 | ((( | ||
| 72 | 1c | ||
| 73 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 74 | ((( | ||
| 75 | Tämä checklist täytettynä | ||
| 76 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 77 | ((( | ||
| 78 | \\ | ||
| 79 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 80 | ((( | ||
| 81 | \\ | ||
| 82 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 83 | ((( | ||
| 84 | \\ | ||
| 85 | ))) | ||
| 86 | |(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 87 | ((( | ||
| 88 | 1d | ||
| 89 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 90 | ((( | ||
| 91 | Käyttöoikeuden hakeminen | ||
| 92 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 93 | ((( | ||
| 94 | \\ | ||
| 95 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 96 | ((( | ||
| 97 | \\ | ||
| 98 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 99 | ((( | ||
| 100 | \\ | ||
| 101 | ))) | ||
| 102 | |(% class="highlight-blue" style="text-align: left;" colspan="5" data-highlight-colour="blue" %)(% class="highlight-blue" style="text-align: left;" colspan="5" data-highlight-colour="blue" %) | ||
| 103 | ((( | ||
| 104 | ==== 2 Vaatimukset rajapintaan liittyen ==== | ||
| 105 | ))) | ||
| 106 | |(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 107 | ((( | ||
| 108 | 2a | ||
| 109 | )))|(% style="text-align: left;" %)(% style="text-align: left;" %) | ||
| 110 | ((( | ||
| 111 | Rajapinnalla on omistaja | ||
| 112 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 113 | ((( | ||
| 114 | (% style="color: rgb(0,0,0);" %)Yksittäisten API:n julkaisuun liittyvät toimet kuuluvat API:n omistajalle/kehittäjälle. API:n omistaja määrittelee myös sen, kuka rajapintaa saa käyttää ja millaisilla ehdoilla. Rajapintojen julkaisu ja tuen antaminen yksittäisen rajapinnan osalta kuuluu API:n omistajalle/kehittäjälle. | ||
| 115 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 116 | ((( | ||
| 117 | \\ | ||
| 118 | )))|(% style="text-align: left;" colspan="1" %)(% style="text-align: left;" colspan="1" %) | ||
| 119 | ((( | ||
| 120 | \\ | ||
| 121 | ))) | ||
| 122 | |(% colspan="1" %)(% colspan="1" %) | ||
| 123 | ((( | ||
| 124 | 2b | ||
| 125 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 126 | ((( | ||
| 127 | Rajapinnan dokumentaatio (swagger) on tuotettu vaaditulla tarkkuustasolla. | ||
| 128 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 129 | ((( | ||
| 130 | Rajapinnan kuvaukselta edellytetään OpenAPI (Swagger) -standardin mukainen kuvaus, joka sisältää: | ||
| 131 | |||
| 132 | * palvelun nimi ja kuvaus (mitä palvelu tekee) | ||
| 133 | * palvelun teknisen ylläpidon yhteysosoite | ||
| 134 | * julkaistava palvelun osoite gatewayllä. Ensimmäisessä swagger-importissa vaaditaan yksilöivä basePath tai server urlin path, johon api oletuksena julkaistaan. Esimerkiksi basepath: /organisation tai url: [[https:~~/~~/api.helsinki.fi/organisation>>url:https://api.helsinki.fi/organisation||shape="rect"]] | ||
| 135 | * JOS julkaistava palvelu sisältää henkilötietoa, julkaisu tulee tehdä basePath /securen alle esimerkiksi /secure/persondata | ||
| 136 | * rajapinnan kutsuosoitteet kuten /organisation/financial sekä niiden tarkat kuvaukset | ||
| 137 | * kutsuesimerkit tarkalla tasolla: Onko GET/POST/muu, json vai muu, mahdolliset annettavat lisäparametrit, pakolliset kentät | ||
| 138 | * sanomamuodot: application/json, text/xml, palautettavan tai lähetettävän objektin tarkka kuvaus kenttien tyyppeineen sekä rajoitteineen(maksimi pituus) | ||
| 139 | * tunnistautuminen: vaaditaanko esimerkiksi api-avain joillekin metodeille/koko APIlle. Oletuksena vaaditaan vähintään Api-avain jokaiselle rajapinnalle. On tärkeää muistaa nämä määritykset swagger-dokumentaatiossa. | ||
| 140 | * virheilmoituksien kuvaukset: esimerkiksi 404 = ei löydy | ||
| 141 | * lisenssiehdot, jos on | ||
| 142 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 143 | ((( | ||
| 144 | \\ | ||
| 145 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 146 | ((( | ||
| 147 | \\ | ||
| 148 | ))) | ||
| 149 | |||
| 150 | \\ | ||
| 151 | |||
| 152 | == 4 Rajapinnan avaaminen API-gateway-alustalle == | ||
| 153 | |||
| 154 | Taustapalvelu, joka julkaisee rajapinnan tulee avata tietoliikenteellisesti API-gateway alustalle. Api-gateway nodet sijaitsevat seuraavissa osoitteissa | ||
| 155 | |||
| 156 | (% class="relative-table wrapped" style="width: 58.1994%;" %) | ||
| 157 | |=(% colspan="1" %)(% colspan="1" %) | ||
| 158 | ((( | ||
| 159 | Node | ||
| 160 | )))|=((( | ||
| 161 | Tuotantoympäristön node | ||
| 162 | )))|=(% colspan="1" %)(% colspan="1" %) | ||
| 163 | ((( | ||
| 164 | IP-osoite | ||
| 165 | ))) | ||
| 166 | |(% colspan="1" %)(% colspan="1" %) | ||
| 167 | ((( | ||
| 168 | 1 | ||
| 169 | )))|((( | ||
| 170 | api-prod-gw-1-19.it.helsinki.fi | ||
| 171 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 172 | ((( | ||
| 173 | 128.214.224.137 | ||
| 174 | ))) | ||
| 175 | |(% colspan="1" %)(% colspan="1" %) | ||
| 176 | ((( | ||
| 177 | 2 | ||
| 178 | )))|((( | ||
| 179 | api-prod-gw-2-19.it.helsinki.fi | ||
| 180 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 181 | ((( | ||
| 182 | 128.214.224.226 | ||
| 183 | ))) | ||
| 184 | |(% colspan="1" %)(% colspan="1" %) | ||
| 185 | ((( | ||
| 186 | \\ | ||
| 187 | )))|((( | ||
| 188 | \\ | ||
| 189 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 190 | ((( | ||
| 191 | \\ | ||
| 192 | ))) | ||
| 193 | |(% class="highlight-grey" colspan="1" data-highlight-colour="grey" %)(% class="highlight-grey" colspan="1" data-highlight-colour="grey" %) | ||
| 194 | ((( | ||
| 195 | **Node** | ||
| 196 | )))|(% class="highlight-grey" title="Taustaväri: Harmaa" colspan="1" data-highlight-colour="grey" %)(% class="highlight-grey" title="Taustaväri: Harmaa" colspan="1" data-highlight-colour="grey" %) | ||
| 197 | ((( | ||
| 198 | **Testiympäristön node** | ||
| 199 | )))|(% class="highlight-grey" title="Taustaväri: Harmaa" colspan="1" data-highlight-colour="grey" %)(% class="highlight-grey" title="Taustaväri: Harmaa" colspan="1" data-highlight-colour="grey" %) | ||
| 200 | ((( | ||
| 201 | **IP-osoite** | ||
| 202 | ))) | ||
| 203 | |(% colspan="1" %)(% colspan="1" %) | ||
| 204 | ((( | ||
| 205 | 1 | ||
| 206 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 207 | ((( | ||
| 208 | api-test-1-19.it.helsinki.fi | ||
| 209 | )))|(% colspan="1" %)(% colspan="1" %) | ||
| 210 | ((( | ||
| 211 | 128.214.224.232 | ||
| 212 | ))) | ||
| 213 | |||
| 214 | \\ | ||
| 215 | |||
| 216 | == 5 Rajapinnan nimeäminen == | ||
| 217 | |||
| 218 | Rajapinnan nimeämiseen on syytä kiinnittää huomiota, koska huonosti nimetty rajapinta aiheuttaa helposti sekaannusta kutsujissa | ||
| 219 | |||
| 220 | \\ | ||
| 221 | |||
| 222 | (% style="list-style-type: square;" %) | ||
| 223 | * Rajapinnan nimen ensimmäinen osa voi olla lähettävän järjestelmän nimi tai muu lähettäjää kuvaava substantiivi ja seuraava osa kuvaa lähetettävää tietoa.\\ | ||
| 224 | (% style="list-style-type: square;" %) | ||
| 225 | ** **esim. /message-center/notification(s) ** | ||
| 226 | * Kuvattu tieto on yksikössä, jos rajapinta palauttaa yhden tiedon ja monikossa jos palautettavia tietueita on useampia | ||
| 227 | * Rajapinnan nimen tulee olla **kuvaava ja selkeä,** niin että kutsuva taho ymmärtää mitä rajapintaa on kutsumassa. Rajapinnan nimi on miellään oikea sana | ||
| 228 | * Rajapinta tulee mielellään olla englanniksi tai samalla kielellä, kun palautettava tieto on (jos rajapinta palauttaa tiedon vain suomeksi voi rajapinnan nimikin olla suomeksi) | ||
| 229 | * Käytä "/"-merkkiä erottaaksesi rakenteisen datan alaosat toisistaan | ||
| 230 | (% style="list-style-type: square;" %) | ||
| 231 | ** esim: /message-center/notifications/{id}/recipient | ||
| 232 | * Käytä "-"-merkkiä helpottaaksesi pitkien nimien luettavuutta | ||
| 233 | (% style="list-style-type: square;" %) | ||
| 234 | ** **esim: message-center-test** | ||
| 235 | * /secure/ polku on turvattu alue ja siellä julkaistut apit vaativat tls client sertifikaatin | ||
| 236 | (% style="list-style-type: square;" %) | ||
| 237 | ** **esim. /secure/message-center/notifications** | ||
| 238 | |||
| 239 | \\ | ||
| 240 | |||
| 241 | == 6 Polun määrittely == | ||
| 242 | |||
| 243 | \\ | ||
| 244 | |||
| 245 | API:n polku määritellään API-gatewaylle ja se reititään kohde palvelimella oikeaan polkuun. Konfigurointeja tehdään seuraaviin kohtiin: | ||
| 246 | |||
| 247 | \\ | ||
| 248 | |||
| 249 | Swagger-dokumentti | ||
| 250 | |||
| 251 | (% style="list-style-type: square;" %) | ||
| 252 | * Servers url parametri Esim. '[[https:~~/~~/api-test.it.helsinki.fi/mece>>url:https://api-test.it.helsinki.fi/mece||shape="rect"]] | ||
| 253 | * Tämän lisäksi swagger-dokumentissä määritellään polut | ||
| 254 | |||
| 255 | Configuration -välilehti | ||
| 256 | |||
| 257 | * Base-url esim: [[https:~~/~~/api-test.it.helsinki.fi/message-center>>url:https://api-test.it.helsinki.fi/message-center||shape="rect"]] | ||
| 258 | * Tämän lisäksi Swagger servers URL are based on the entrypoints | ||
| 259 | |||
| 260 | Endpoints konfiguration | ||
| 261 | |||
| 262 | * Mihin liikenne ohjataan | ||
| 263 | |||
| 264 | Entrypoint | ||
| 265 | |||
| 266 | * Esim. message-center (mikä osoite näytetään ulospäin) | ||
| 267 | |||
| 268 | \\ | ||
| 269 | |||
| 270 | \\ | ||
| 271 | |||
| 272 | \\ | ||
| 273 | |||
| 274 | \\ | ||
| 275 | {{/layout-cell}} | ||
| 276 | |||
| 277 | {{layout-cell}} | ||
| 278 | (% class="auto-cursor-target" %) | ||
| 279 | Parasta ennen: 09.06.2020 | ||
| 280 | |||
| 281 | {{info title="Vaikeustaso"}} | ||
| 282 | Tekninen: | ||
| 283 | |||
| 284 | Hallinnollinen: | ||
| 285 | |||
| 286 | Koordinointi: | ||
| 287 | |||
| 288 | Kalenteriaika: | ||
| 289 | {{/info}} | ||
| 290 | |||
| 291 | (% class="auto-cursor-target" %) | ||
| 292 | \\ | ||
| 293 | |||
| 294 | (% class="wrapped" %) | ||
| 295 | |=(% style="text-align: center;" colspan="2" %)(% style="text-align: center;" colspan="2" %) | ||
| 296 | ((( | ||
| 297 | Vastuunjako | ||
| 298 | ))) | ||
| 299 | |=((( | ||
| 300 | Ohjeistus | ||
| 301 | )))|((( | ||
| 302 | [[tike-ohjelmistotuotanto@helsinki.fi>>mailto:tike-ohjelmistotuotanto@helsinki.fi||shape="rect"]] | ||
| 303 | ))) | ||
| 304 | |=((( | ||
| 305 | Tekninen alusta | ||
| 306 | )))|((( | ||
| 307 | tike-integraatiopalvelu@helsinki.fi | ||
| 308 | ))) | ||
| 309 | |||
| 310 | (% class="auto-cursor-target" %) | ||
| 311 | \\ | ||
| 312 | |||
| 313 | {{info title="Yhteystietoja"}} | ||
| 314 | [[tike-ohjelmistotuotanto@helsinki.fi>>mailto:tike-ohjelmistotuotanto@helsinki.fi||shape="rect"]] | ||
| 315 | {{/info}} | ||
| 316 | |||
| 317 | (% class="auto-cursor-target" %) | ||
| 318 | \\ | ||
| 319 | |||
| 320 | \\ | ||
| 321 | |||
| 322 | (% class="auto-cursor-target" %) | ||
| 323 | |||
| 324 | |||
| 325 | {{toc/}} | ||
| 326 | |||
| 327 | \\ | ||
| 328 | |||
| 329 | (% class="auto-cursor-target" %) | ||
| 330 | \\ | ||
| 331 | {{/layout-cell}} | ||
| 332 | {{/layout-section}} | ||
| 333 | {{/layout}} |