OBS: Denne tjenesten kommer med et par problemer:
- Den er lite fleksibel, da man bare kan oppdatere en tabell av gangen, og ofte kan dette feile på grunn av triggere i basen
- Den er potensielt treg, da man sannsynligvis må hente mye mer data enn det man er interessert i
- Den er lite treffsiker, og dersom man skal ha sammensatte data, trengs det flere spørringer og prosessering på klientsiden
Tabeller i FS som er tilgjengelige
- Person
- Soknad
- SoknadsAlternativ
- Student
- Vurdkombmelding
- Undervisningsmelding
- Studieprogramstudent
- KullKlasseStudent
- StudentVurdKombProtokoll
- Emne
- Studieprogram
- Undaktivitet
- Undervisningsenhet
- Fagperson
- Kull
- KullKlasse
- Rom
- Sted
- Personrolle
- Persontelefon
- Personakseptanse
Eksempler
Alle Java-eksempler benytter seg av Apache HTTP Client
Alle eksempler går mot vår kursbase så eventuelle data man ser her er fiktive.
Tilgjengelige grensesnitt
SELECT
Denne tjenesten søker mot en gitt tabell og returnerer en rad. Dette er en POST-tjeneste som tar imot XML for søkekriterier og returnerer XML som svar. POST-parameteres heter "xml". Denne tjenesten vil gi feil dersom søkekriteriet returnerer mer enn en rad.
Eksempel på spørring
<doSelectRequest xmlns="http://fsws.usit.no/schemas/crud"> <Person> <Fodselsdato>15158</Fodselsdato> <Personnr>90366</Personnr> </Person> </doSelectRequest>
URL for test: https://fs-test.uio.no/fsrest/rest/crud/select
URL for prod: https://fsws.usit.no/fsrest/rest/crud/select
Java-eksempel
import java.util.ArrayList; import java.util.List; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.AuthCache; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.auth.BasicScheme; import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; public class GetCrudSingle { private static String theUrl = "https://fs-test.uio.no/fsrest/rest/crud/select"; private static String xml = "<doSelectRequest xmlns=\"http://fsws.usit.no/schemas/crud\"><Person><Fodselsdato>15158</Fodselsdato><Personnr>90366</Personnr></Person></doSelectRequest>"; public static void main(String[] args) throws Exception { HttpHost target = new HttpHost("fs-test.uio.no", 443, "https"); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(target.getHostName(), target.getPort()), new UsernamePasswordCredentials("brukernavn", "passord")); CloseableHttpClient client = HttpClients.custom() .setDefaultCredentialsProvider(credsProvider).build(); AuthCache authCache = new BasicAuthCache(); BasicScheme basicAuth = new BasicScheme(); authCache.put(target, basicAuth); HttpClientContext localContext = HttpClientContext.create(); localContext.setAuthCache(authCache); HttpPost post = new HttpPost(theUrl); List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("xml", xml)); post.setEntity(new UrlEncodedFormEntity(parameters)); HttpResponse response = client.execute(post); response.getEntity().writeTo(System.out); } }
Eksempel på svar
<doSelectResponse xmlns="http://fsws.usit.no/schemas/crud"> <Status> <Kode>1</Kode> <Melding>OK</Melding> </Status> <Person> <Fodselsdato>15158</Fodselsdato> <Personnr>90366</Personnr> <Kjonn>M</Kjonn> <Etternavn>And</Etternavn> <Fornavn>Anders</Fornavn> <Landnr_Hjemland>0</Landnr_Hjemland> <Adrlin1_Hjemsted>Onkel Skrewe</Adrlin1_Hjemsted> <Adrlin2_Hjemsted>Andeveien 25</Adrlin2_Hjemsted> <Adrlin3_Hjemsted>0663 OSLO</Adrlin3_Hjemsted> <Adresseland_Hjemsted/> <Postnr_Hjemsted>663</Postnr_Hjemsted> <Emailadresse_Privat>anders.and@andeby.com</Emailadresse_Privat> <Telefonnr_Hjemsted/> <Telefonnr_Mobil>11111111</Telefonnr_Mobil> <Studentgrunnlagkode/> <Emailadresse/> <Status_Dod/> <Brukernavn/> </Person> </doSelectResponse>
SELECTMANY
Denne tjenesten søker mot en gitt tabell og returnerer flere rader. Dette er en POST-tjeneste som tar imot XML for søkekriterier og returnerer XML som svar. POST-parameteres heter "xml"
Eksempel på spørring
<doSelectRequest xmlns="http://fsws.usit.no/schemas/crud"> <Person> <Fodselsdato>15100</Fodselsdato> </Person> </doSelectRequest>
URL for test: https://fs-test.uio.no/fsrest/rest/crud/selectMany
URL for prod: https://fsws.usit.no/fsrest/rest/crud/selectMany
Java-eksempel
import java.util.ArrayList; import java.util.List; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.AuthCache; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.auth.BasicScheme; import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; public class GetCrudMany { private static String theUrl = "https://fs-test.uio.no/fsrest/rest/crud/selectMany"; private static String xml = "<doSelectManyRequest xmlns=\"http://fsws.usit.no/schemas/crud\"><Person><Fodselsdato>15100</Fodselsdato></Person></doSelectManyRequest>"; public static void main(String[] args) throws Exception { HttpHost target = new HttpHost("fs-test.uio.no", 443, "https"); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(target.getHostName(), target.getPort()), new UsernamePasswordCredentials("brukernavn", "passord")); CloseableHttpClient client = HttpClients.custom() .setDefaultCredentialsProvider(credsProvider).build(); AuthCache authCache = new BasicAuthCache(); BasicScheme basicAuth = new BasicScheme(); authCache.put(target, basicAuth); HttpClientContext localContext = HttpClientContext.create(); localContext.setAuthCache(authCache); HttpPost post = new HttpPost(theUrl); List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("xml", xml)); post.setEntity(new UrlEncodedFormEntity(parameters)); HttpResponse response = client.execute(post); response.getEntity().writeTo(System.out); } }
Eksempel på svar
<doSelectManyResponse xmlns="http://fsws.usit.no/schemas/crud"> <Person> <Fodselsdato>15100</Fodselsdato> <Personnr>90892</Personnr> <Kjonn>K</Kjonn> <Etternavn>Dahle</Etternavn> <Fornavn>Ingrid</Fornavn> <Landnr_Hjemland/> <Adrlin1_Hjemsted/> <Adrlin2_Hjemsted/> <Adrlin3_Hjemsted>7081 SJETNEMARKA</Adrlin3_Hjemsted> <Adresseland_Hjemsted/> <Postnr_Hjemsted>7081</Postnr_Hjemsted> <Emailadresse_Privat/> <Telefonnr_Hjemsted/> <Telefonnr_Mobil/> <Studentgrunnlagkode/> <Emailadresse/> <Status_Dod/> <Brukernavn/> </Person> <Person> <Fodselsdato>15100</Fodselsdato> <Personnr>90116</Personnr> <Kjonn>M</Kjonn> <Etternavn>Mjøsund</Etternavn> <Fornavn>Stig</Fornavn> <Landnr_Hjemland/> <Adrlin1_Hjemsted/> <Adrlin2_Hjemsted/> <Adrlin3_Hjemsted>7079 FLATÅSEN</Adrlin3_Hjemsted> <Adresseland_Hjemsted/> <Postnr_Hjemsted>7079</Postnr_Hjemsted> <Emailadresse_Privat/> <Telefonnr_Hjemsted/> <Telefonnr_Mobil/> <Studentgrunnlagkode/> <Emailadresse/> <Status_Dod/> <Brukernavn/> </Person> </doSelectManyResponse>
UPSERT
Oppdaterer eller lager en ny rad i tabell. Denne tjenesten tar XML med data som skal oppdateres.
Eksempel på request
<doUpsertRequest xmlns="http://fsws.usit.no/schemas/crud"> <Person> <Fodselsdato>15158</Fodselsdato> <Personnr>90366</Personnr> <Emailadresse>test@tester123.no</Emailadresse> </Person> </doUpsertRequest>
URL for test: https://fs-test.uio.no/fsrest/rest/crud/upsert
URL for prod: https://fsws.usit.no/fsrest/rest/crud/upsert
Java-eksempel
import java.util.ArrayList; import java.util.List; import org.apache.http.HttpHost; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.AuthCache; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.auth.BasicScheme; import org.apache.http.impl.client.BasicAuthCache; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; public class SetCrud { private static String theUrl = "https://fs-test.uio.no/fsrest/rest/crud/upsert"; private static String xml = "<doUpsertRequest xmlns=\"http://fsws.usit.no/schemas/crud\"><Person><Fodselsdato>15158</Fodselsdato><Personnr>90366</Personnr><Emailadresse>test@tester123.no</Emailadresse></Person></doUpsertRequest>"; public static void main(String[] args) throws Exception { HttpHost target = new HttpHost("fs-test.uio.no", 443, "https"); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(target.getHostName(), target.getPort()), new UsernamePasswordCredentials("richared", "6eihghiW")); CloseableHttpClient client = HttpClients.custom() .setDefaultCredentialsProvider(credsProvider).build(); AuthCache authCache = new BasicAuthCache(); BasicScheme basicAuth = new BasicScheme(); authCache.put(target, basicAuth); HttpClientContext localContext = HttpClientContext.create(); localContext.setAuthCache(authCache); HttpPost post = new HttpPost(theUrl); List<NameValuePair> parameters = new ArrayList<NameValuePair>(); parameters.add(new BasicNameValuePair("xml", xml)); post.setEntity(new UrlEncodedFormEntity(parameters)); HttpResponse response = client.execute(post); response.getEntity().writeTo(System.out); } }
Eksempel på svar
<doUpsertResponse xmlns="http://fsws.usit.no/schemas/crud">
<Status>
<Kode>1</Kode>
<Melding>OPPDATERING</Melding>
</Status>
</doUpsertResponse>