728x90 반응형 전체 글262 Rust로 백엔드 개발기(feat. 메이플스토리) - 08 사용자별 요청 처리 이번 시간에는 user_ocid 값을 어떻게 사용자별로 사용하여 api를 호출할 수 있는지에 대해 다뤄보고자 합니다. 현재 maplestory open api를 활용하는 프로젝트에서 rust의 axum을 활용하여 백엔드를 개발중인 상태입니다. maple open api에서는 getOcid를 통하여 사용자 ocid값을 가져오고, 이를 다른 사용자 관련 다른 api들에서 해당 ocid 값을 통하여 통신을 진행합니다. 그러다보면, getOcid로 가져온 값이 사용자별로 다르게 작동해야만 합니다. 이 부분은 frontend와 통신을 진행하면서 어떤 방법으로 사용자를 특정지어 사용할 것인지에 대하여 이야기가 필요합니다. 해당 포스팅을 통하여 frontend와 이야기를 통해 진행하고자 했던 방식들에 대하여 이야기해.. 2025. 3. 31. Rust로 백엔드 개발기(feat. 메이플스토리) - 07 Null 제외하는 방법 이번 시간에는 몇가지 기능을 추가 개발하면서, rust에는 없는 null관련 데이터를 가져오는 방법에 대해 배워보도록 하겠습니다. rust에는 null이 없지만 response로 받은 json에 null값이 포함되어 있는 경우에 대하여 대처할 수 있습니다.방법 1 Optionrust에는 Option이라는 함수를 통하여 해당 값이 있는 경우와 없는 경우로 나눠서 체크할 수 있습니다. 다음과 같이 skill에 대한 정보를 불러오는 구조체가 있다고 생각해봅시다.pub struct SkillInfo { pub skill_name: String, pub skill_description: String, pub skill_level: i8, pub skill_effect: Option, p.. 2025. 3. 31. Rust로 백엔드 개발기(feat. 메이플스토리) - 06 프로젝트 분리 이번 시간에는 api 관련 함수가 많아짐에 따라, main과 같이 작성될 경우, main.rs가 엄청 길어질 것으로 예상되어 함수를 분리하는 내용에 대해 다뤄보고자 합니다.현재 상태현재 main.rs에 main, get_ocid, get_user_default_info 함수가 함께 존재합니다. maple open api의 사용자 관련 api들의 개수는 대략 10개이상으로 이 모든 함수를 main에 구현하게 된다면, 매우 복잡해질 것으로 예상됩니다. 또한 추후에 사용자 뿐만 아니라 다른 api들도 추가하게 된다면, main에 30개가량의 api관련 함수들이 모두 같이 존재하게 되죠개선 방법?현재 상태에서 개선하는 방법으로는 main을 제외한 함수들을 다른 .rs 소스코드에 추가하여 이를 가리키도록 하는 방.. 2025. 3. 26. Rust로 백엔드 개발기(feat. 메이플스토리) - 05 전역변수 이번 시간에는 api_key를 외부에서 적용하는 방법과 ocid를 전역변수로 다루는 방법에 대해 알아보고자 합니다.API KEY를 argument로 받는 방법java에서는 default로 argument를 받습니다.public static void Main(String[] args){}그치만 rust에서는 argument를 받지 않는 이상 cargo run을 통해 실행이 됩니다. 만약 여기서 argument를 받게 된다면 cargo run {argument} 형식으로 받을 수 있습니다. main 함수에서 다음과 같이 argument를 받아올 수 있습니다.async fn main() { let args: Vec = std::env::args().collect();}저희는 argument로 api_ke.. 2025. 3. 23. Rust로 백엔드 개발기(feat. 메이플스토리) - 04 캐릭터 정보 조회 이전 시간에는 maple story open api를 발급받는 방법에 대해서 다뤄보았습니다. 이번 시간에는 이전에 다뤄본 open api를 rust 프로젝트에서 사용하는 방법에 대해서 다뤄보고자 합니다.axum에서 api 통신기본적으로 axum은 서버로, rest api로 요청이 들어오는 경우, 해당 요청을 수행한 후 결과를 전달하는 역할을 합니다. 따라서, 서버에서 다른 서버로 rest api 통신을 진행하기 위해서는 axum이 아닌 다른 라이브러리를 사용해야 합니다. 해당 프로젝트에서는 "reqwest"를 사용하도록 하겠습니다. 다음과 같이 "Cargo.toml"의 "dependencies"에 추가해 줍니다.reqwest = { version = "0.11", features = ["json"] }캐.. 2025. 3. 13. Rust로 백엔드 개발기(feat. 메이플스토리) - 03 OPEN API 이전 시간에는 GET, POST 요청 관련된 코드를 작성해 보았습니다. 이번 시간에는 프로젝트의 메인인 maple stroy open api관련 내용에 대해 다뤄보고자 합니다.open api 확인가장 먼저 https://openapi.nexon.com/ 해당 사이트로 이동합니다.게임 중 메이플스토리를 선택합니다.그러면 다음과 같이 각종 open api 종류들을 확인해 볼 수 있습니다. 해당 open api를 활용하기 위해서는 API Key가 필요합니다.api key 발급마이페이지의 애플리케이션 등록을 선택합니다.이후 다음과 같이 사용한 open api의 게임, 개발 단계, 출시할 서비스 명을 작성하신 후 등록을 누르시면 API키가 발급되고, 내 애플리케이션에서 확인해 볼 수 있습니다. 이후, 게임 - 메.. 2025. 3. 13. Rust로 백엔드 개발기(feat. 메이플스토리) - 02 GET, POST, JSON 통신 open api를 활용할려면 가장 먼저 해야하는 것은rest api 통신이 가능한 세팅Frontend에 원하는 정보를 가져올 수 있는 GET, POST 세팅프로젝트 생성가장 먼저 rust 프로젝트를 생성합니다.cargo new maple그다음으로 사용하고자 하는 axum을 dependencies에 추가해야 합니다.2025/03/05 기준 가장 최신 버전인 0.8.1을 추가하겠습니다.[dependencies]axum = "0.8.1"공식 문서에는 다음과 같이 작성되어져 있습니다.axum is designed to work with tokio and hyper.axum은 tokio 와 hyper 와 함께 작동하도록 설계되었습니다 .tokio를 사용하기 위해서는 다음 명령어를 사용하여 dependency에 추.. 2025. 3. 9. Rust로 백엔드 개발기(feat. 메이플스토리) - 01 시작 https://openapi.nexon.com/ko/game/maplestory/?id=14 NEXON Open API | gameThis is a list of the games provided by NEXON Open API.openapi.nexon.com메이플스토리에서 open api로 다양한 정보들을 호출할 수 있도록 제공해주고 있습니다. 해당 open api를 활용하여 백엔드와 프론트 엔드 프로젝트를 시작하게 되었습니다. 기존에는 java와 Spring boot를 활용하여 할 예정이였으나, 해당 open api는 백엔드보다는 프론트가 더 중요할 것으로 보이기도 하고, Rust를 학습을 시작하면서 해당 언어로 프로젝트를 진행해보고자, Rust와 axum를 활용하여 해당 프로젝트를 진행해 볼까 합니.. 2025. 3. 5. log4j2 variable UNDEFINED log4j2를 사용하다보면, log4j2에서 사용한 변수들을 System.properties를 통하여 주입하지 않은 경우 해당 값을 인식하지 못하여 UNDEFINED를 발생하게 된다.해당 포스팅에서는 logPath를 지정하지 못한 경우 발생하는 logPath_IS_UNDEFINED라는 폴더가 생성되는데, 이를 처리하는 다양한 방식들에 대하여 포스팅해보고자 한다.상황log4j2.xml을 통하여 log를 작성해야함log4j2.xml에는 logPath를 지정하는 appender와 지정하지 않은 appender가 존재함logPath를 지정하지 않는 appender만 사용해야 하는 상황이 존재함1. log4j2.xml 2개logPath를 지정하는 경우에는 log4j2-logPath.xml이라는 파일을 만들고 해당.. 2025. 2. 25. 이전 1 2 3 4 ··· 30 다음 728x90 반응형