CRUD-tjenester

CRUD står for Create, Read, Update, Delete. Og legger til rette for oppdateringer / søk i en del databasetabeller i FS.

Tjenesten tar og henter XML. Definisjonen av XML-skjemaet finner du her.

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>
Publisert 14. aug. 2014 14:43 - Sist endret 18. feb. 2021 12:48