Commit b36e336f by Patryk Czarnik

Proste przykłady REST bez modelu

parent 2d84654e
package sklep.rest;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@Path("/now")
// @Singleton
public class DataCzas {
// W JAX-RS domyślne zachowanie jest takie, że dla każdego requestu tworzony jest nowy obiekt klasy obsługującej zapytania.
// (polityka "per request"; można ją zmienić za pomocą adnotacji @Singleton - wtedy jeden obiekt obsłuży wszystkie zapytania)
// Daje to możliwość zapisania pewnych ulotnych informacji w polach prywatnych tej klasy - nikt nam ich nie nadpisze.
private LocalDateTime now = LocalDateTime.now();
{
// ten blok wykona się podczas tworzenia każdego obiektu
System.out.println("Powstał obiekt DataCzas z czasem równym " + now);
}
// ta metoda obsługuje adres .../api/now
@GET
public LocalDateTime odczytajDataICzas() {
return now;
}
// ta metoda obsługuje adres .../api/now/date
@GET
@Path("/date")
public LocalDate odczytajDate() {
return now.toLocalDate();
}
// ta metoda obsługuje adres .../api/now/date/year
@GET
@Path("/date/year")
public int odczytajRok() {
return now.getYear();
}
// ta metoda obsługuje adres .../api/now/date/month
@GET
@Path("/date/month")
public int odczytajMiesiac() {
return now.getMonthValue();
}
// ta metoda obsługuje adres .../api/now/date/day
@GET
@Path("/date/day")
public int odczytajDzien() {
return now.getDayOfMonth();
}
// ta metoda obsługuje adres .../api/now/time
@GET
@Path("/time")
public LocalTime odczytajCzas() {
return now.toLocalTime();
}
// ta metoda obsługuje adres .../api/now/time/second
@GET
@Path("/time/second")
public int odczytajSekunde() {
return now.getSecond();
}
}
package sklep.rest;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
@Path("/hello")
public class Hello {
@GET
public String sayHello() {
return "Hello World!";
}
}
package sklep.rest;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JerseyConfig extends ResourceConfig {
/* Musimy zapewnić, aby podczas startu aplikacji na obiekcie ResourceConfig (z Jerseya)
* została wywołan metoda register dla wszystkich "resource classes", które wchodzą w skład aplikacji JAX-RS.
* W wersji Springowej nie ma klasy typu Application.
*/
public JerseyConfig() {
register(Hello.class);
register(DataCzas.class);
register(Kalkulator.class);
}
}
package sklep.rest;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
@Path("/calc")
public class Kalkulator {
@GET
@Path("/{x}+{y}")
public long dodaj(@PathParam("x") long a, @PathParam("y") long b) {
return a+b;
}
@GET
@Path("/{x}-{y}")
public long odejmij(@PathParam("x") long a, @PathParam("y") long b) {
return a-b;
}
@GET
@Path("/{x}*{y}")
public long pomnoz(@PathParam("x") long a, @PathParam("y") long b) {
return a*b;
}
@GET
@Path("/{x}/{y}")
public long podziel(@PathParam("x") long a, @PathParam("y") long b) {
return a/b;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment