Year and month
순서
1. 서비스 생성
2. 년도와 월에 대한 서비스 메서드 추가
3. 서비스로부터 년도, 월 정보 데이터를 갖고오는 컴포넌스 업데이트
4. HTML에 드랍다운 리스트 생성
1.
ng generate service services/SeolForm
서비스 생성
2.
rxjs: Reactive JavaScript
rxjs 에 있는 of는 object를 Observable로 바꾼다.
3.
배열 변수 만들고
서비스를 constructor에 주입한다.
현재 몇 월, 년도인지 가져와서 서비스 메서드에 주입한다.
신용카드 월, 년도 데이터를 서비스에서 가져와 만들어 놓은 변수에 넣는다.
4.
루프를 통해서 배열 데이터를 보여준다.
올해를 선택하면 이번 달부터 12월까지 보여주고
올해말고 다른 년도를 선택하면 1월부터 12월까지 보여주도록 한다.
1. HTML 수정, 이벤트 바인딩 추가.
2. component 수정. event handler를 추가한다. 선택된 년도를 읽고 월 리스트를 수정한다.
1.
HTML에서 이벤트 바인딩
2.
ts에서 해당되는 이벤트 메서드 생성
첨에 시작되면 ngOnInit 함수에 의해 서비스가 실행되어 년도와 월 배열 데이터를 component 변수가 받는다.
이 변수를 HTML페이지에서 표현한다.
유저가 페이지에서 데이터를 조작하면 이벤트 바인딩된 메서드가 실행되어서 선택한 년도에 따라 시작 월을 조건문으로 나눈다. 시작 월을 서비스에 입력하여 결과 배열 데이터를 받아서 다시 HTML에 보여준다.
Country and State
Backend
REST API를 통해서 나라를 갖고오고
유저가 나라를 선택하면 관련 주를 갖고온다.
나라에 따라서 주가 될 수 있고 도가 될 수 있다.
순서
1. 데이터 베이스 테이블 생성
2. JPA Entity 생성
3. Spring Data Repositories 생성
4. Spring Data REST Config 수정
1.
USE `full-stack-ecommerce`;
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS `country`;
CREATE TABLE `country` (
`id` smallint unsigned NOT NULL,
`code` varchar(2) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS `state`;
CREATE TABLE `state` (
`id` smallint unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`country_id` smallint unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_country` (`country_id`),
CONSTRAINT `fk_country` FOREIGN KEY (`country_id`) REFERENCES `country` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1;
테이블 생성
insert into `country` values
(1, 'BR', 'Brazil'),
(2, 'CA', 'Canada'),
(3, 'DE', 'Germany'),
(4, 'IN', 'India'),
(5, 'TR', 'Turkey'),
(6, 'US', 'United States');
INSERT INTO `state` VALUES
(1,'Acre',1),
(2,'Alagoas',1),
(3,'Amapá',1),
(4,'Amazonas',1),
(5,'Bahia',1),
(6,'Ceará',1),
(7,'Distrito Federal',1),
(8,'Espírito Santo',1),
(9,'Goiás',1),
(10,'Maranhão',1),
(11,'Mato Grosso do Sul',1),
(12,'Mato Grosso',1),
(13,'Minas Gerais',1),
(14,'Paraná',1),
(15,'Paraíba',1),
(16,'Pará',1),
(17,'Pernambuco',1),
(18,'Piaui',1),
(19,'Rio de Janeiro',1),
(20,'Rio Grande do Norte',1),
(21,'Rio Grande do Sul',1),
(22,'Rondônia',1),
(23,'Roraima',1),
(24,'Santa Catarina',1),
(25,'Sergipe',1),
(26,'São Paulo',1),
(27,'Tocantins',1),
(28,'Alberta',2),
(29,'British Columbia',2),
(30,'Manitoba',2),
(31,'New Brunswick',2),
(32,'Newfoundland and Labrador',2),
(33,'Northwest Territories',2),
(34,'Nova Scotia',2),
(35,'Nunavut',2),
(36,'Ontario',2),
(37,'Prince Edward Island',2),
(38,'Quebec',2),
(39,'Saskatchewan',2),
(40,'Yukon',2),
(41,'Baden-Württemberg',3),
(42,'Bavaria',3),
(43,'Berlin',3),
(44,'Brandenburg',3),
(45,'Bremen',3),
(46,'Hamburg',3),
(47,'Hesse',3),
(48,'Lower Saxony',3),
(49,'Mecklenburg-Vorpommern',3),
(50,'North Rhine-Westphalia',3),
(51,'Rhineland-Palatinate',3),
(52,'Saarland',3),
(53,'Saxony',3),
(54,'Saxony-Anhalt',3),
(55,'Schleswig-Holstein',3),
(56,'Thuringia',3),
(57,'Andhra Pradesh',4),
(58,'Arunachal Pradesh',4),
(59,'Assam',4),
(60,'Bihar',4),
(61,'Chhattisgarh',4),
(62,'Goa',4),
(63,'Gujarat',4),
(64,'Haryana',4),
(65,'Himachal Pradesh',4),
(66,'Jammu & Kashmir',4),
(67,'Jharkhand',4),
(68,'Karnataka',4),
(69,'Kerala',4),
(70,'Madhya Pradesh',4),
(71,'Maharashtra',4),
(72,'Manipur',4),
(73,'Meghalaya',4),
(74,'Mizoram',4),
(75,'Nagaland',4),
(76,'Odisha',4),
(77,'Punjab',4),
(78,'Rajasthan',4),
(79,'Sikkim',4),
(80,'Tamil Nadu',4),
(81,'Telangana',4),
(82,'Tripura',4),
(83,'Uttar Pradesh',4),
(84,'Uttarakhand',4),
(85,'West Bengal',4),
(86,'Andaman and Nicobar Islands',4),
(87,'Chandigarh',4),
(88,'Dadra and Nagar Haveli',4),
(89,'Daman & Diu',4),
(90,'Lakshadweep',4),
(91,'Puducherry',4),
(92,'The Government of NCT of Delhi',4),
(93,'Alabama',6),
(94,'Alaska',6),
(95,'Arizona',6),
(96,'Arkansas',6),
(97,'California',6),
(98,'Colorado',6),
(99,'Connecticut',6),
(100,'Delaware',6),
(101,'District Of Columbia',6),
(102,'Florida',6),
(103,'Georgia',6),
(104,'Hawaii',6),
(105,'Idaho',6),
(106,'Illinois',6),
(107,'Indiana',6),
(108,'Iowa',6),
(109,'Kansas',6),
(110,'Kentucky',6),
(111,'Louisiana',6),
(112,'Maine',6),
(113,'Maryland',6),
(114,'Massachusetts',6),
(115,'Michigan',6),
(116,'Minnesota',6),
(117,'Mississippi',6),
(118,'Missouri',6),
(119,'Montana',6),
(120,'Nebraska',6),
(121,'Nevada',6),
(122,'New Hampshire',6),
(123,'New Jersey',6),
(124,'New Mexico',6),
(125,'New York',6),
(126,'North Carolina',6),
(127,'North Dakota',6),
(128,'Ohio',6),
(129,'Oklahoma',6),
(130,'Oregon',6),
(131,'Pennsylvania',6),
(132,'Rhode Island',6),
(133,'South Carolina',6),
(134,'South Dakota',6),
(135,'Tennessee',6),
(136,'Texas',6),
(137,'Utah',6),
(138,'Vermont',6),
(139,'Virginia',6),
(140,'Washington',6),
(141,'West Virginia',6),
(142,'Wisconsin',6),
(143,'Wyoming',6),
(144,'Adıyaman',5),
(145,'Afyonkarahisar',5),
(146,'Ağrı',5),
(147,'Aksaray',5),
(148,'Amasya',5),
(149,'Ankara',5),
(150,'Antalya',5),
(151,'Ardahan',5),
(152,'Artvin',5),
(153,'Aydın',5),
(154,'Balıkesir',5),
(155,'Bartın',5),
(156,'Batman',5),
(157,'Bayburt',5),
(158,'Bilecik',5),
(159,'Bingöl',5),
(160,'Bitlis',5),
(161,'Bolu',5),
(162,'Burdur',5),
(163,'Bursa',5),
(164,'Çanakkale',5),
(165,'Çankırı',5),
(166,'Çorum',5),
(167,'Denizli',5),
(168,'Diyarbakır',5),
(169,'Düzce',5),
(170,'Edirne',5),
(171,'Elazığ',5),
(172,'Erzincan',5),
(173,'Erzurum',5),
(174,'Eskişehir',5),
(175,'Gaziantep',5),
(176,'Giresun',5),
(177,'Gümüşhane',5),
(178,'Hakkâri',5),
(179,'Hatay',5),
(180,'Iğdır',5),
(181,'Isparta',5),
(182,'İstanbul',5),
(183,'İzmir',5),
(184,'Kahramanmaraş',5),
(185,'Karabük',5),
(186,'Karaman',5),
(187,'Kars',5),
(188,'Kastamonu',5),
(189,'Kayseri',5),
(190,'Kırıkkale',5),
(191,'Kırklareli',5),
(192,'Kırşehir',5),
(193,'Kilis',5),
(194,'Kocaeli',5),
(195,'Konya',5),
(196,'Kütahya',5),
(197,'Malatya',5),
(198,'Manisa',5),
(199,'Mardin',5),
(200,'Mersin',5),
(201,'Muğla',5),
(202,'Muş',5),
(203,'Nevşehir',5),
(204,'Niğde',5),
(205,'Ordu',5),
(206,'Osmaniye',5),
(207,'Rize',5),
(208,'Sakarya',5),
(209,'Samsun',5),
(210,'Siirt',5),
(211,'Sinop',5),
(212,'Sivas',5),
(213,'Şanlıurfa',5),
(214,'Şırnak',5),
(215,'Tekirdağ',5),
(216,'Tokat',5),
(217,'Trabzon',5),
(218,'Tunceli',5),
(219,'Uşak',5),
(220,'Van',5),
(221,'Yalova',5),
(222,'Yozgat',5),
(223,'Zonguldak',5);
SET foreign_key_checks = 1;
데이터 넣기
3.
Entity를 만들자
Country 클래스
State 클래스
이제 Repository를 만들자
<Country, Integer>는 Entity class와 Primary key이다.
collectionResourceRel : 반환되는 데이터 배열의 이름을 설정한다.
path : 경로
localhost:8080/api/countries로 엔드포인트 설정
REST는 위와 같은 설정으로 controller가 필요없이 CRUD 생성이 가능하다.
country에 state가 연결되어 있어서 REST로 데이터베이스에서 country를 갖고오면 JSON으로 둘 다 표현된다.
JSON에서 country, state 나누어서 표현하고 싶다.
states에 @JsonIgnore 추가
import는 import com.fasterxml.jackson.annotation.JsonIgnore;에서 한다.
country, state 둘 다 나누고 싶으니 Respository를 따로 만들어주자.
전체 리스트는 /countries나 /states 로 가져온다.
특정 country의 state를 갖고오는 법은
localhost:8080/api/states/search/findByCountryCode?code=IN
4.
Spring Data Rest Config 수정
반복되는 부분을 method로 변환
extracct method를 이용한다.
클래스를 받는 매개변수를 하나 추가한다.
'컴퓨터공학 > Boot & Angular' 카테고리의 다른 글
Angular> 유효성 검사 (0) | 2022.03.06 |
---|---|
Angular> 결제화면 3 (0) | 2022.03.01 |
Angular> 결제 화면 (0) | 2022.02.23 |
Angular> 장바구니 목록 수량 조절 (0) | 2022.02.16 |
Angular> 장바구니 추가 버튼 (0) | 2022.02.12 |